字典是一系列键-值对,每个键都与一个值想关联,可以用键来访问与之关联的值,与键相关联的值可以是数字、字符串、列表乃至字典(Python可以将任何对象作为字典中的值),Python中,字典用“{}”表示
一、字典的创建和删除:
直接赋值创建:dictionary = {'key1':'value1','key2':'value2','key3':'value3'…}
在创建字典时,键(key)必须是唯一的,值(value)可以不唯一,一个键可以有多个值
列表创建:
eg:
key = ['che','chen','cheng','chi']
value = ['车','尘','称','吃']
zip1 = zip(key,value) #转换为zip对象
word = dict(zip1) #使用dict转换zip1为字典
word= dict(zip(key,value)) #转换为字典
word = {key:value} #该方法,key必须为元组,不能为列表
print(word) #显示字典
#zip方法可将多个列表和援助对应位置的元素组合成元组,并返回包含这些内容的zip对象
(想得到元组可使用tuple()函数转换为元组,列表可用list()函数得到)
eg:通过给定键-值对创建
dict1 = dict(che ='车',chen = '尘',cheng = '称',chi = '吃')
创建空字典:word = {} 或word = dict()
创建只有key的字典:
name = ['che','chen','cheng','chi']
dictionary = dict.fromkeys(name) ---fromkeys()方法
print(dictionary)
删除整个字典:del name
删除字典元素:name.clear()
删除指定key的元素:name.pop(key值)
二、通过键值对访问字典
直接输出:print() ---列出字典所有元素
通过键值指定输出:print(name["che"] if ["che"] in name else "地点不存在该值")
字典对象获取:print(name.get("che")) ---get获取时,如果指定的key不存在,则显示None
print(name.get("ch","没有该值"))
---“,”后面为默认值,只在key不存在时显示该值(不写默认值,则显示None)
三、遍历字典:items方法
name = {'che':'车','chen':'尘','cheng':'称','chi':'吃'}
print(name.items())
for item in name.items():
print(item) #直接显示
for key,value in name.items():
print(key,"的值是",value) #显示key和value
for key in name.keys():
print(key) #只显示键(使用keys方法)
for value in name.values():
print(value) #只显示值(使用values方法)
四、添加修改及删除字典
添加/操作:dictionary[key] = value #字典名[键] = 值(不唯一,可以为任何对象)
当key已经存在的时候,执行修改动作,不存在时执行添加操作
删除字典的元素:del name[key] #删除字典name中键为key的元素
一般要删除之前需要判断是否存在该元素
eg:if "碧琪" in sign:
del sign["碧琪"]
五、字典推导式:类似于列表推导式(把“[]”换成“{}”)
{键表达式:值表达式 for 循环}
eg:生成包含四个随机数的模块
import random #导入随机数模块
randomict = {i:random.randint(10,100) i in range(1,5)}
print(randomict)
#randint(10,100)表示从10-100随机取数
eg:name = ['绮梦','冷尹一','香凝','黛兰']
sign = ['水平','射手','双鱼','双子']
dict1 = {i:j for i,j in zip(name,sign)} #字典推导式
print(dict1)
六、集合(set,set为可变集合):
用于保存不重复元素,最好的应用是去重,当有多个元素相同时,只会显示一个,且集合是无序排列,不支持索引,集合一般使用“{}”或大写的拉丁字母表示
集合的创建:
直接创建:set1 = {元素1,元素2,元素3…}
set1 = {'水平','射手','双鱼','双子'}
创建空集合:set2=set() #创建空集合只能使用set方法,不能直接使用{}
将列表转换为集合:set3 = set(name) #如果列表有重复元素,则自动过滤,只生成一条
集合添加元素:setname.add(element) ---不能添加重复元素(会自动过滤)
#集合名称.add方法(要添加的对象(不能是列表、元组等不可迭代对象))
mr = set(["零基础学Java","零基础学Android","零基础学C语言","零基础学PHP"])
mr.add("零基础学Python")
print(mr)
集合元素的删除:remove删除一个指定元素,pop方法随机删除一个元素,clear方法清空元素
mr.remove("零基础学Python") #使用时一般需要先判断元素是否存在于集合中
mr.pop() #该方法要返回删除的值(返回被删除的值) a = mr.pop()
mr.clear()
del mr #删除整个集合
集合的交集:多个集合相交的部分(用&表示)
集合的并集:在多个集合出现过或只在某一个集合中出现(用|表示)
集合的差集:只在A集合中出现,不在B集合中出现(用-表示)
集合的对称差集:只在其中一个集合中出现(用^表示)
python = {"绮梦","冷依依","香凝","紫萱"}
c = {"冷依依","林语","紫萱","圣博"}
print("选择Python的名字",python)
print("选择C的名字",c)
print("交集运算",python&c)
print("并集运算",python|c)
print("差集运算",python-c)
print("对称差集运算",python^c)
 
 

五、Python-字典与集合的更多相关文章

  1. Python字典和集合

    Python字典操作与遍历: 1.http://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084739.html 2.http://5iqiong. ...

  2. 流畅的python 字典和集合

    介绍 dict 类型不但在各种程序里广泛使用,它也是 Python 语言的基石.模块的命名空间.实例的属性和函数的关键字参数中都可以看到字典的身影.跟它有关的内置函数都在 __builtins__._ ...

  3. day3学python 字典+列表集合+文件读取

    字典+列表集合+文件读取 字典示例 ************************ 各地食品的三级菜单************************* 1.使用字典嵌套字典 2.采用死循环思路 3 ...

  4. Python 字典dict 集合set

    字典dict Python内置字典,通过key-value进行存储,字典是无序的,拓展hash names = ['Michael', 'Bob', 'Tracy'] scores = [95, 75 ...

  5. Python 字典和集合基于哈希表实现

    哈希表作为基础数据结构我不多说,有兴趣的可以百度,或者等我出一篇博客来细谈哈希表.我这里就简单讲讲:哈希表不过就是一个定长数组,元素找位置,遇到哈希冲突则利用 hash 算法解决找另一个位置,如果数组 ...

  6. Python字典和集合的内部实现

    1. 哈希表(Hash tables) 在Python中,字典是通过哈希表实现的.也就是说,字典是一个数组,而数组的索引是经过哈希函数处理后得到的.哈希函数的目的是使键均匀地分布在数组中.由于不同的键 ...

  7. 转:Python字典与集合操作总结

    转自:http://blog.csdn.net/business122/article/details/7537014 一.创建字典 方法①: >>> dict1 = {} > ...

  8. python 字典元组集合字符串

    s1 = ''hello, world!'' s2 = '\n\hello, world!\\n' print(s1, s2, end='') s1 = '\141\142\143\x61\x62\x ...

  9. Python字典、集合之高山流水

    字典dict字典是由大括号{键:值}组成.字典是无序的.字典的键必须是不可变数据类型.不能使用列表作为键,但可以使用元祖作为字典的键.例如: dict_ = {"test":&qu ...

  10. python字典与集合操作

    字典操作 字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划.字母来查对应页的详细内容. 语法: info = { 's1': "jack", 's3' ...

随机推荐

  1. webbug3.0靶场第二关

    由于是新手,当看见一个图片后一脸蒙比,查了一下才知道这原来叫做隐写术 看人家说破解图片隐写术用Stegsolve非常好用,然后查了一下kali软件仓库并没有找到Steegsolve这个软件,只能另想他 ...

  2. Javascrip基础

    术语解释 Javascript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速 ...

  3. 20164318 毛瀚逸 Exp4 恶意代码分析

    ---恢复内容开始--- 1 关键内容 系统运行监控 (1)使用计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一段时间并分析该文件,综述分析结果. (2)安装配置sys ...

  4. 编程总结5&学习总结

    基础题目 请在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始).并将最大值和对应的最小下标数值写入文件. 输入:请建立以自己英文名字命名的txt文件,并输入 ...

  5. 可持久化trie学习笔记

    其实很早之前就想学习可持久化trie,不过由于换队友等情况,还是优先去学数论和计算几何,今天突然心血来潮学了一发可持久化trie,感觉还是蛮简单的,不过由于自己很长时间没写过可持久化了,都快忘了是个什 ...

  6. JSP+javaBean:简易投票网页练习

    一.项目目标 session作用域中如果不及时清理一些对象,在一定久的时间或相当数量的请求后,造成session中大量对象堆积,这将严重影响服务器的性能. 在本实例中,通过写一个jsp与javaBea ...

  7. 必做作业3:原型化设计:地铁扫码app

    一.设计背景 伴随着地铁规模的快速扩张,使用手机扫码进出站成为了一种新型的地铁出行方式.在今天的北京和上海,地铁扫码已经极为普遍,广州和深圳也正在快速普及这种新方式.相信在不久的将来,其他拥有地铁或者 ...

  8. Java技术之如何保证同一资源被多个线程并发访问时的完整性?

    常用的同步方法是采用信号或加锁机制,保证资源在任意时刻至多被一个线程访问.Java语言在多线程编程上实现了完全对象化,提供了对同步机制的良好支持. 在Java中一共有四种方法支持同步,其中前三个是同步 ...

  9. TensorFlow机器学习实战指南之第一章

    TensorFlow基础 一.TensorFlow算法的一般流程 1.导入/生成样本数据集 2.转换和归一化数据:一般来讲,输入样本数据集并不符合TensorFlow期望的形状,所以需要转换数据格式以 ...

  10. 2018-2019-2 20175202实验二《Java面向对象程序设计》实验报告

    2018-2019-2 20175202实验二<Java面向对象程序设计>实验报告 一.实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初 ...