Day7 字典和集合

字典

1.字典存在的价值

可以在同时保存多个意义不同的数据的时候通过key来对数据进行区分和说明

2.什么是字典(dict)

​ 字典是容器型数据类型;将{}作为容器的标志,里面多个元素(元素是键值对)用逗号隔开:{键1:值1,键2:值2,键3:值3,…}

字典的元素:必须是键值对;

键 - 必须是不可变数据,一般用字符串;唯一的(功能是对值进行说明)

值 - 任何类型的数据都可以,可以重复。(值才是字典真正想要保存的数据)

字典是可变的(支持增删改);字典是无序(不支持下标)

空字典

d1 = {}
print(type(d1), d1)    # <class 'dict'> {}

键不可变

d2 = {'abc': 100, 12: 200, (10, 20): 300}
print(d2)
# d3 = {'abc': 100, 12: 200, [10, 20]: 300}   # 报错! 列表不能作为key

键是唯一的

d4 = {'name': '小明', 'name':'小花', 'age': 18}
print(d4)   # {'name': '小花', 'age': 18}

值是任何类型的数据

d5 = {'k1': 90, 'k2': 1.23, 'k3': True, 'k4': 'abc', 'k5': [1, 2], 'k6': {'a': 10}, 'k7': lambda x: x*2}
print(d5)

字典无序

d6 = {'name': '张三', 'age': 30}
d7 = {'age': 30, 'name': '张三'}
print(d6 == d7)   # True

元素的增删改查

1.查 - 获取字典的值

1)查单个值

字典[key] - 获取字典中指定key对应的值;如果key不存在会报错

字典.get(key) - 获取字典中指定key对应的值;如果key不存在会报错,把None返回

字典.get(key, 默认值) - 获取字典中指定key对应的值;如果key不存在会报错,把默认值返回

dog = {'name': '旺财', 'sex': '公狗', 'color': '黄色', 'breed': '土狗', 'age': 2}print(dog['name'], dog['breed'])
# print(dog['height'])      # KeyError: 'height'print(dog.get('age'))
print(dog.get('height'))    # Noneprint(dog.get('color', '黑色'))     # 黄色
print(dog.get('height', 0))     # 0

2)遍历

for 变量 in字典:

​ 循环体

注意:变量取到的是字典的每个key

dog = {'name': '旺财', 'sex': '公狗', 'color': '黄色', 'breed': '土狗', 'age': 2}
for x in dog:print('x:', x, dog[x])

2.增/改 - 添加键值对/修改键对应的值

1)字典[key] = 值

如果key不存在就是添加key:值对应的键值对;如果key存在就是修改指定key对应的值

computer = {'brand': '联想', 'color': '灰色', 'price': 5300, 'ram': 16}
print(computer)# 修改
computer['color'] = '黑色'
print(computer)# 增加
computer['cup_num'] = 4
print(computer)

2)字典.setdefault(key, value)

添加键值对(只能添加不能修改)

computer.setdefault('size', 14)
print(computer)computer.setdefault('price', 3000)
print(computer)

3.删 - 删除键值对

1)del 字典[key]

删除指定key对应的键值对(如果指定key不存在会报错)

computer = {'brand': '联想', 'color': '黑色', 'price': 5300, 'ram': 16, 'cup_num': 4, 'size': 14}
del computer['ram']
print(computer)    # {'brand': '联想', 'color': '黑色', 'price': 5300, 'cup_num': 4, 'size': 14}# del computer['name']    # KeyError: 'name'
# del computer['联想']    # KeyError: '联想'

2)字典.pop(key)

取出指定key对应的值,并且返回可以对应的值

color = computer.pop('color')
print(computer)    # {'brand': '联想', 'price': 5300, 'cup_num': 4, 'size': 14}
print(color)   # 黑色

字典相关操作

1.运算符

字典不支持+、*、>、<、>=、<=, 只支持 == 和 !=

d1 = {'a': 10, 'b': 20}
d2 = {'b': 20, 'a': 10}
print(d1 == d2)     # True

2.in 和 not in

key in 字典 - 判断字典中是否存在指定的key

d3 = {'a': 10, 'b': 20, 'c': 30, 100: 200}
print('a' in d3)    # True
print(10 in d3)     # False
print('10' in d3)   # False
print(100 in d3)    # True

3.相关函数

(了解)sum, max, min, sorted - 针对的操作对象是字典的key

len,dict

1)len(字典) - 获取字典中键值对的个数

d3 = {'a': 10, 'b': 20, 'c': 30, 100: 200}
print(len(d3))    # 4

2)dict(数据) - 将指定数据转换成字典

数据 - a. 数据本身是序列 b.序列中的每一个元素是小序列 c.小序列中元素的个数是2 d.小序列的第一个元素不可变

seq = [(1, 2), (10, 20), (100, 200), (1000, 2000), ('abc', 123), 'ab']
d4 = dict(seq)
print(d4)   # {1: 2, 10: 20, 100: 200, 1000: 2000, 'abc': 123, 'a': 'b'}

字典转列表 - 将字典的key作为列表元素

computer = {'brand': '联想', 'color': '黑色', 'price': 5300, 'ram': 16, 'cup_num': 4, 'size': 14}
print(list(computer))   # ['brand', 'color', 'price', 'ram', 'cup_num', 'size']

字典相关方法

1.字典.clear()

清空字典

2.字典.copy()

赋值字典产生一个一模一样的新字典并返回

p1 = {'name': '小明', 'age': 18, 'gender': '男'}
p2 = p1
p3 = p1.copy()
print(p2)       # {'name': '小明', 'age': 18, 'gender': '男'}
print(p3)       # {'name': '小明', 'age': 18, 'gender': '男'}p1['name'] = '小花'
print(p2)   # {'name': '小花', 'age': 18, 'gender': '男'}
print(p3)   # {'name': '小明', 'age': 18, 'gender': '男'}

3.(了解)dict

dict.fromkeys(序列, 值) - 创建一个新的字典,将序列中元素作为字典的key, 每个key对应的值就是指定值

dict.fromkeys(序列)

d1 = dict.fromkeys('abc', 100)
print(d1)   # {'a': 100, 'b': 100, 'c': 100}d2 = dict.fromkeys(['name', 'age', 'sex'])
print(d2)    # {'name': None, 'age': None, 'sex': None}d3 = dict.fromkeys(['name', 'age', 'sex'], 0)
print(d3)    # {'name': 0, 'age': 0, 'sex': 0}

4.字典,items()

(同时获取字典的key和值)将字典转换成一个序列,序列中的元素是每个键值对对应的小序列

student = {'name': '小明', 'age': 18, 'gender': '男', 'score': 90}
print(student.items())    # dict_items([('name', '小明'), ('age', 18), ('gender', '男'), ('score', 90)])
print(list(student.items()))   # [('name', '小明'), ('age', 18), ('gender', '男'), ('score', 90)]

遍历字典的时候同时获取键和值(效率低)

for key, value in student.items():print(key, value)

5.字典.keys()

获取字典所有的key(返回一个序列)

print(d4.keys())    # dict_keys(['a', 'b', 'c'])

6.字典.valus()

获取字典所有的值(返回一个序列)

print(d4.values())    # dict_values([10, 20, 30])

7.字典.update(序列)

将序列中所有的元素以键值对的形式添加到字典

序列:必须是可以转换成字典的序列

d5 = {'a': 10, 'b': 20}
d5.update({100: 200, 20: 30})
print(d5)   # {'a': 10, 'b': 20, 100: 200, 20: 30}d5 = {'a': 10, 'b': 20}
d5.update([(10, 30), 'ab'])
print(d5)    # {'a': 'b', 'b': 20, 10: 30}

集合

1.什么是集合

容器:将{}作为容器的标志,多个元素用逗号隔开:{元素1, 元素2, 元素3,…}

元素:不可变的;唯一的(集合自带去重功能)

可变的;无序的

1)空集合

s1 = {}     # {}是空字典不是空集合
print(type(s1))    # <class 'dict'># 空集合
s2 = set()
print(type(s2), len(s2))    # <class 'set'> 0

2)集合元素不可变

s3 = {90, 'abc', (1, 2)}
print(s3)# s4 = {90, 'abc', [1, 2]}    # TypeError: unhashable type: 'list'

3)集合元素是唯一的

s5 = {1, 2, 3, 1, 1, 2}
print(s5)   # {1, 2, 3}l1 = ['张三', '李四', '张三', '隔壁老王', '李四', '张三']
new_l1 = list(set(l1))
print(new_l1)   # ['李四', '张三', '隔壁老王']

2.数学集合运算

并集(|)、交集(&)、差集(-)、对称差集(^)、子集(>=)、真子集(>)

1)并集

A和B的并集是将A和B的元素放到一起构成的新集合

A = {1, 2, 3, 4, 5, 6}
B = {4, 5, 6, 7, 8}
C = A | B
print(C)    # {1, 2, 3, 4, 5, 6, 7, 8}

2)交集

A和B的交集,写作A&B,是既属于A的、又属于B的所有元素组成的集合。

C = A & B
print(C)    # {4, 5, 6}

3)差集

两个集合也可以相"减"。写作B−A,是属于B的、但不属于A的所有元素组成的集合。

C = B - A
print(C)     # {8, 7}C = A - B
print(C)    # {1, 2, 3}

4)对称差集

在集合A和集合B中, 只包含在A中和只包含在B中的元素的集合

C = A ^ B
print(C)   # {1, 2, 3, 7, 8}

5)子集

= - 判断是否是子集; > - 判断是否是真子集

A = {1, 2, 3, 4, 5}
B = {4, 5}
print(A >= B)    # True
print(A > B)     # FalseC = {4, 5}
print(B >= C)    # True
print(B > C)     # FalseD = {1, 7}
print(A > D)     # False

随便学学Python-day7-字典和集合相关推荐

  1. Python Day7字典与集合

    一字典的应用 字典数据以键值对形式出现,字典数据和数据顺序无关,即不支持下标,无论数据                          顺序如何变化,只需按照对应的键的名字查找数据即可. 二字典的语 ...

  2. python中字典和集合的区别_Python中字典和集合学习小结

    映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表. ...

  3. python中可以作为定界符_在 Python 中,字典和集合都是用一对 作为定界符,字典的每个元素有两部分组成,即 和 ,其中 不允许重复。_学小易找答案...

    [多选题]路由器A的G0/0/1接口配置信息如下,下列说法正确的有?(多选) acl number 3000 rule 5 deny 17 rule 10 deny 89 rule 15 deny 6 ...

  4. Python遍历字典、集合与函数

    Python遍历字典.集合与函数 一.遍历字典 代码块 意义 keys() 该⽅法返回字典所有的key values() 该⽅法返回⼀个序列,序列中保存有字典的值 items() 该⽅法会返回字典中所 ...

  5. python字典中append_零基础入手!Python中字典与集合的使用指南

    全文共5092字,预计学习时长10分钟 本文将介绍Python的内置集合模块,用于支持集合和键值对等数学概念. 什么是集合? 集合是一组用于储存唯一值的序列. 初始化 可使用花括号{}定义集合. &g ...

  6. python字典和集合对象可以进行索引操作_建议收藏丨纯知识点:Python基础—字典、集合操作大全...

    本文为纯知识点,预计需阅读二十分钟 数据结构基本上就是--它们是可以处理一些 数据 的 结构 .或者说,它们是用来存储一组相关数据的. 在Python中有四种内建的数据结构--列表.元组和字典,集合. ...

  7. python中字典和集合的界定符_python中的字典 和 集合

    python中字典是一种key-value的数据类型 字典的特性: 1.无序的 2.key必须的唯一的,so,字典天生去重 语法: 增加 修改 删除 查找 多级字典嵌套及操作 字典的其他用法 #set ...

  8. python中字典和集合对象是无序的_Python基础(四):元组、字典和集合

    基础学习第四弹,常用对象:元组.字典和集合 一.元组 1.1 元组的应用场景 思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做? 答:列表?列表可以一次性存储多个数据,但是列表中的数据 ...

  9. 大学python教材实验七字典与集合答案_2018-08-28 day7 python基础 字典和集合(含作业)...

    1.字典(dict) 一.字典是容器类型(序列 ),以键值对作为元素.字典里面存的数据全是以键值对的形式出现的 b/键值对----> 键:值(key:value) dict1 = {'key1' ...

  10. python的字典与集合

    一.集合 集合(set)是一个无序的不重复元素序列.1,2,3,4,1,2,3 = 1,2,3,4 1.集合的创建 # 1. 集合的创建 s = {1, 2, 3, 1, 2, 3} # {1, 2, ...

最新文章

  1. FSD键盘钩子框架参考爱写驱动的女装大佬
  2. 完美解决NV4_disp.dll已正常停止工作”蓝屏问题
  3. linux中断响应时间太慢_linux+arm系统学习与基础学习
  4. 中国中医科学院中药资源中心2021年公开招聘应届毕业生预公告
  5. 高颜值免费在线SCI绘图工具支持导出PPT格式图片和图片分享功能
  6. 荣耀20 PRO差评太多?原来是这个原因,回应:差评不冤
  7. 浏览器文件分段断点上传简单示例(python 篇)
  8. Algorithms(forth edition),算法(第四版) algs4.jar 与 algs4-data.zip 网盘下载
  9. protues仿真之数码管消影问题
  10. MATLAB下载安装
  11. 深圳腾讯地图地铁站经纬度
  12. 解决tf报Graph disconnected错误
  13. 67键键盘如何输出`和~符号(一百五十一)
  14. 用HTML5+CSS3实现qq会员页面的仿制
  15. Android微信hook
  16. 你的密码泄露没?触目惊心的密码泄露该如何查防
  17. python加换行和去换行(去掉换行,end =““;加换行 ,‘/n‘)
  18. potplayer——一款爱不释手的视频播放器
  19. “I2C”通信的那些坑,新手必看!
  20. (十七)NVIDIA Jetson Xavier NX——镜像烧写

热门文章

  1. 图像处理———图像的几何变换原理及实现
  2. iOS WKWebView 那些坑
  3. 内网渗透测试:内网横向移动基础总结
  4. 友情链接php模板,自定义友情链接页面模板
  5. linux邮箱客户端安装指令,如何在Ubuntu 18.04中安装邮件客户端Geary 0.12.2
  6. 专用5G网络的7种部署方案
  7. device unauthorized adbd cannot run as root in production builds insufficient permissions
  8. 基于docker 部署 canvas-lms
  9. JMeter 性能测试实例
  10. 前端面试技巧和注意事项