字典

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下:

>>> stu = {'Michael': 95, 'Bob': 75, 'Tracy': 85}    #创建字典
>>> stu['Michael']
95

字典的特性:

  • dict是无序的
  • key必须是唯一的,所以自动去重

字典的基本操作:

  • 增加
  • 删除
  • 修改
  • 查找

一、增加和修改

>>> info = {
...     'stu1101': "TengLan Wu",
...     'stu1102': "LongZe Luola",
...     'stu1103': "XiaoZe Maliya",
... }    #创建一个字典info
>>>
>>> info
{'stu1103': 'XiaoZe Maliya', 'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola'}
>>> info["stu1104"] = "苍井空"    #增加一个,如果没有这个键就增加,否则就修改这个键
>>> info
{'stu1104': '苍井空', 'stu1103': 'XiaoZe Maliya', 'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola'}

二、删除

>>> info.pop("stu1101")    #字典的内置方法,删除键名为stu1101
'TengLan Wu'
>>> info
{'stu1104': '苍井空', 'stu1103': 'XiaoZe Maliya', 'stu1102': 'LongZe Luola'}
>>> del info['stu1103']    #python自带的删除方法,删除键名为stu1103
>>> info
{'stu1104': '苍井空', 'stu1102': 'LongZe Luola'}
>>> info.popitem()    #随机删除一个
('stu1104', '苍井空')
>>> info
{'stu1102': 'LongZe Luola'}

三、查找

>>> 'stu1102' in info     #判断成员关系
True
>>> info.get('stu1102')  #查找方法,如果查找对象不存在,此方法不报错,没有返回结果
'LongZe Luola'
>>> info['stu1105']    #此方法查找不存在的对象会报错
Traceback (most recent call last):File "<stdin>", line 1, in <module>
KeyError: 'stu1105'

四、获取字典中所有键名、值和键值对

>>> info = {
...     'stu1101': "TengLan Wu",
...     'stu1102': "LongZe Luola",
...     'stu1103': "XiaoZe Maliya",
... }
>>>
>>>
>>> info.values()    #获取值
dict_values(['XiaoZe Maliya', 'TengLan Wu', 'LongZe Luola'])
>>> info.keys()    #获取键名
dict_keys(['stu1103', 'stu1101', 'stu1102'])
>>> info.items()    #获取键值对,以list的方式返回
dict_items([('stu1103', 'XiaoZe Maliya'), ('stu1101', 'TengLan Wu'), ('stu1102', 'LongZe Luola')])

五、setdefault方法

>>> info.setdefault("stu1106","Alex")
'Alex'
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
>>> info.setdefault("stu1102","龙泽萝拉")  #因为字典中已有stu1102,并且字典有自动去重功能
'LongZe Luola'
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}

六、update方法

>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
>>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}
>>> info.update(b) #将字典b加入到字典info中
>>> info
{'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}

七、循环字典

#方法1,建议使用
for key in info:print(key,info[key])#方法2
for k,v in info.items(): #会先把dict转成list,数据里大时莫用print(k,v)

八、多级嵌套字典及字典

>>> football = {
...         '英超':{
...             '曼联':{
...                 '积分':60,
...                 '进球':45,
...                 '排名':1
...             },
...             '阿森纳':{
...                 '积分':55,
...                 '进球':30,
...                 '排名':4
...             },
...             '切尔西':{
...                 '积分':59,
...                 '进球':40,
...                 '排名':2
...             }
...         },
...         '中超':{
...             '广州恒大':{
...                 '积分':45,
...                 '进球':25,
...                 '排名':1
...             },
...             '上海上港':{
...                 '积分':20,
...                 '进球':10,
...                 '排名':2
...             },
...             '江苏苏宁':{
...                 '积分':30,
...                 '进球':40,
...                 '排名':3
...             }
...         },
...         '西甲':{
...             '巴萨':{
...                 '积分':60,
...                 '进球':55,
...                 '排名':1
...             },
...             '皇马':{
...                 '积分':55,
...                 '进球':59,
...                 '排名':2
...             },
...             '马竞':{
...                 '积分':55,
...                 '进球':58,
...                 '排名':3
...             }
...         }
...     }
>>> football['中超']['广州恒大']
{'进球': 25, '积分': 45, '排名': 1}
>>> football['中超']['广州恒大']['积分']
45

集合

  set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

集合的主要作用:

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系

集合的基本操作:

  • 创建
  • 增加
  • 删除

一、创建

>>> set1 = set([1,3,4,5,99,54,22])
>>> set2 = set([3,22,5,6,7,10,4])
>>> set1
{1, 99, 3, 4, 5, 54, 22}
>>> set2
{3, 4, 5, 6, 7, 10, 22}
>>>
>>> set3 = set("Hello")    #创建一个唯一字符的集合
>>> set3
{'e', 'l', 'H', 'o'}

二、增加

>>> set1.add(20)
>>> set1
{1, 99, 3, 4, 5, 20, 54, 22}
>>> set2.update([10,37,42])
>>> set2
{3, 4, 5, 6, 7, 37, 10, 42, 22}

三、删除

>>> set1.remove(1)    #如果元素不存在,会报错
>>> set1
{99, 3, 4, 5, 54, 22}
>>> set1.discard(100)    #如果元素存在就删除,不存在则do nothing
>>> set1
{99, 3, 4, 5, 54, 22}
>>> set1.pop()    #使用pop()随意删除一个
99
>>> set1
{3, 4, 5, 54, 22}
>>> len(set1)    #set 的长度
5

四、集合

>>> set1 = set([1,3,4,5,99,54,22])
>>> set2 = set([3,22,5,6,7,10,4])
>>> set1
{1, 99, 3, 4, 5, 54, 22}
>>> set2
{3, 4, 5, 6, 7, 10, 22}
#包含set1和set2中的每一个元素,取并集(即A和B)
>>> set1.union(set2)
{1, 99, 3, 4, 5, 6, 7, 10, 54, 22}
>>> set3 = set1 | set2
>>> set3
{1, 99, 3, 4, 5, 6, 7, 10, 54, 22}
#包含set1和set2中相同的元素,取交集(即AB中都有的)
>>> set1.intersection(set2)
{3, 4, 5, 22}
>>> set3 = set1 & set2
>>> set3
{3, 4, 5, 22}
#包含set1中有但是set2中没有的元素,取差集(即A有B没有)
>>> set1.difference(set2)
{1, 99, 54}
>>> set3 = set1 - set2
>>> set3
{1, 99, 54}
#包含set1和set2中不重复的元素,取对称差集(即A有B没有,B有A没有)
>>> set1.symmetric_difference(set2)
{1, 6, 7, 99, 10, 54}
>>> set3 = set1 ^ set2
>>> set3
{1, 6, 7, 99, 10, 54}
#set4是否set5的子集
>>> set4 = set([1,2,3,4,5,6,7,8,9])
>>> set4
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> set5 = set([1,3,5,7,9])
>>> set5
{1, 3, 5, 9, 7}
>>> set4.issubset(set5)
False
>>> set4
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> set6 = set4 <= set5
>>> set6
False
#set4是否包含set5的全部元素
>>> set4.issuperset(set5)
True
>>> set4
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> set6 = set4 >= set5
>>> set6
True

五、成员关系测试

>>> set7 = set([1,2])
>>> set7
{1, 2}
>>> 1 in set7    #测试1是否是set7的成员
True
>>> set7 = set([1,2,100])
>>> set7
{1, 2, 100}
>>> 100 not in set7    #测试100是否不是set7的成员
False

转载于:https://www.cnblogs.com/kirusx/p/6523657.html

Python-基础知识-字典dict和集合set相关推荐

  1. 【Python基础】字典dict和集合set

    今天看了一些python的字典和集合的文章,发觉底层有些东西自己不是很清楚,关于哈希和内存,网上搜了很多发现都是零星的说明,包括csdn里面都是很多杂乱的记录.通过自己搜集点东西把基础用法和实现原理都 ...

  2. Python基础知识——字典dict

    字典 字典是Python中常用的数据类型,由于字典较为复杂,本文总结了字典的构成,常用处理字典方法和常用处理字典函数 使用键-值(key-value)存储,具有极快的查找速度 例如:dict1={&q ...

  3. Python基础知识——字典:for循环遍历字典

    遍历字典 方法一 使用dict.items()方法来获取字典中所有的键值对. dict_1 = {'a':1,'b':2,'c':3} for key ,value in dict_1.items() ...

  4. Python基础知识、基本概念、下载python和pycharm、列表、元组、字典等等

    先看后赞,养成习惯.点赞收藏,人生辉煌! 目录 1.Python基础知识 1.1 基本概念 1.2 下载python和pycharm 1.3 格式化输出 1.4 键盘输入 1.5 运算符和表达式 2. ...

  5. 3.【Python编程】字典Dict相关知识及基本操作

    目录 3.[Python编程]字典Dict相关知识及基本操作 3.1 字典的创建 3.2 访问字典里的值 3.3 修改字典 3.4 删除字典元素 3.5 字典的常用函数 3.[Python编程]字典D ...

  6. python set集合_Python字典(dict)和集合(set)

    想必大家都有查字典的经历吧,让我们再回顾一下查字典的步骤:根据拼音或者边旁找到这个字,然后翻到这个字对应的页数,就能看到这个字的详细解释啦. Python字典(dict)其实也是差不多的概念,在字典( ...

  7. python集合set底层原理_Python进阶11_字典dict和集合set的秘密

    本节你将看到关于字典dict和集合set更加深入的原理,尤其是关于散列在其中的作用,将回答以下问题:Python 里的 dict 和 set 的效率有多高? 为什么它们是无序的? 为什么并不是所有的 ...

  8. python基础知识资料-Python基础知识梳理 - 第02部分

    本文是Python基础知识的第二篇, 主要是对内置对象类型的介绍, 涉及的类型如下表. 数字类型 在Python中, 数字并不是一个真正的对象类型, 而是一组类似类型的分类, 如整数和浮点数, 复数等 ...

  9. python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))

    Python介绍. Unix & Linux & Window & Mac 平台安装更新 Python3 及VSCode下Python环境配置配置 python基础知识及数据分 ...

最新文章

  1. CVPR 2020丨基于点云的3D物体检测新框架
  2. 如何查看某oracle实例下面定义了多少jobs
  3. Linux命令(1)—— ls、pwd、tree、clear、文件相关操作
  4. 使用visualVM launcher的一些注意事项
  5. python 2.7下的正则将中文分隔符去掉
  6. android fastboot原理,FastBoot使用一
  7. 【李宏毅2020 ML/DL】P62-65 More about Auto-encoder
  8. tensorflow中tfrecords使用介绍
  9. 思科:多款主流信息传递应用程序易遭到会话劫持
  10. VC++中视频采集系统(摄像头的制作,串口通信的应用)
  11. LabVIEW升级图像识别功能
  12. Windows自带集成工具对ISO镜像是否源于官方网站的验证
  13. PLC控制系统接地要求
  14. MNIST手写体数字识别数据集
  15. 目标检测YOLOv3
  16. java会导致蓝屏么_原来有这么多原因会导致电脑蓝屏啊
  17. 智慧医院信息化建设整体解决方案
  18. 每周教育关注 | 新时代的教育评价改革
  19. 模电和数电在应用上的区别和联系
  20. 如何提交网站地图,让谷歌、雅虎、百度统统收录

热门文章

  1. 大数据WEB阶段(十二)会话技术、Cookie、Session及两者的区别
  2. 【Linux】一步一步学Linux——tail命令(42)
  3. c语言圈子,C语言经典编程
  4. mysql容器操作_如何使用运行MySQL构建Docker容器?
  5. dsp产生正弦波 c语言,TMS320C5502多波形发生器源程序 可产生正弦波,锯齿波等
  6. jquery 操作CSS总结
  7. POJ 1064 Cable master (二分答案,G++不过,C++就过了)
  8. 总结xml配置spring-aop声明式事务配置与hibernate报错:** isno active spring和hibernate整合,原因会话工厂去路(到spring不仅仅是bean)错误
  9. arm 流水线和pc值
  10. Python将文字转拼音