Python3-2020-测试开发-8- 字典dict

Posted csjin-study

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3-2020-测试开发-8- 字典dict相关的知识,希望对你有一定的参考价值。

一、字典的特点

"""

字典:通过键对象,获取对应的值

特点:“键”是任意不可变数据,比如:整数,浮点数,字符串,元组
但是:列表、字典,集合这些可变对象,不能作为键使用,并且“键”不能重复
"""

二、字典的创建

2.1 第一种方式

# 第一种方式
a1 = {name:chu,age:18,job:teacher}
print(a1)    # {‘name‘: ‘chu‘, ‘age‘: 18, ‘job‘: ‘teacher‘}

2.2 第二种方式

# 第二种方式
a2 = dict(name= chu,age=18)
print(a2)    # {‘name‘: ‘chu‘, ‘age‘: 18}

2.3 第三种方式

# 第三种方式
a3 = [(name,chu),(age,18)]
print(dict(a3))   # {‘name‘: ‘chu‘, ‘age‘: 18}

2.4 第四种方式zip()

# 第四种方式zip()
k = [name,age,job]
v = [chu,18,teacher]
a4 = dict(zip(k,v))
print(a4)   # {‘name‘: ‘chu‘, ‘age‘: 18, ‘job‘: ‘teacher‘}

2.5 通过fromkeys()创建值为空的字典

# 通过fromkeys()创建值为空的字典
a5 = dict.fromkeys([name,age,job])
print(a5)     # {‘name‘: None, ‘age‘: None, ‘job‘: None}

三、字典的创建

b1 = {name:chu,age:18,job:teacher}

3.1 一般访问,键不存在时,报错

# 3.1 一般访问,键不存在时,报错
print(b1[name])    # chu
# print(b1[‘aaaaa‘])   # KeyError: ‘aaaaa‘

3.2 通过get()访问,键不存在时,默认返回None,也可自定义返回值

# 3.2 通过get()访问,键不存在时,默认返回None,也可自定义返回值
print(b1.get(name))    # chu
print(b1.get(aaaa))    # None
print(b1.get(aaaa,"此键不存在!"))   # 此键不存在!

3.3 列出所有的键值对 items()

# 3.3 列出所有的键值对 items()
print(b1.items())     # dict_items([(‘name‘, ‘chu‘), (‘age‘, 18), (‘job‘, ‘teacher‘)])

3.4 列出所有的键keys(),值values()

# 3.4 列出所有的键keys(),值values()
print(b1.keys())     # dict_keys([‘name‘, ‘age‘, ‘job‘])
print(b1.values())   # dict_values([‘chu‘, 18, ‘teacher‘])

3.5 len() 字典中有多少个键值对

# 3.5 len() 字典中有多少个键值对

print(len(b1))  # 3

 3.6 检测一个“键”是否存在于字典中

# 3.6 检测一个“键”是否存在于字典中

print("name" in b1)   # True

四、字典元素的添加,修改,删除

 4.1 添加,如果添加的键存在,则会覆盖旧的键,如果不存在,新增键值对

# 4.1 添加,如果添加的键存在,则会覆盖旧的键,如果不存在,新增键值对
print("------------------------添加,修改,删除------------------------------")
b2 = {name:chu,age:18,job:teacher}
b2["address"] = "三元桥一号院"
print(b2)      # {‘name‘: ‘chu‘, ‘age‘: 18, ‘job‘: ‘teacher‘, ‘address‘: ‘三元桥一号院‘}
b2["name"] = "baobao"
print(b2)    # {‘name‘: ‘baobao‘, ‘age‘: 18, ‘job‘: ‘teacher‘, ‘address‘: ‘三元桥一号院‘}

4.2 update() 将新字典中的的所有键值对全部添加到旧的字典中,如果key重复,则直接覆盖

# 4.2 update() 将新字典中的的所有键值对全部添加到旧的字典中,如果key重复,则直接覆盖
x1 = {name:chu,age:18,job:teacher}
x2 = {name1:chu,age1:18,job:teacher01}
x1.update(x2)
print(x1)       # {‘name‘: ‘chu‘, ‘age‘: 18, ‘job‘: ‘teacher01‘, ‘name1‘: ‘chu‘, ‘age1‘: 18}
print(x2)       # {‘name1‘: ‘chu‘, ‘age1‘: 18, ‘job‘: ‘teacher01‘}

4.3 del():删除字典中的值   pop(): 删除字典中的值并将值返回   clear():清空字典   popitem():随机删除和返回该键键值对

# 4.3 del():删除字典中的值   pop(): 删除字典中的值并将值返回   clear():清空字典   popitem():随机删除和返回该键键值对

b3 = {name: chu, age: 18, job: teacher, address: 三元桥一号院}
del(b3[name])
print(b3)       # {‘age‘: 18, ‘job‘: ‘teacher‘, ‘address‘: ‘三元桥一号院‘}

bb = b3.pop(age)
print(b3)   #  {‘job‘: ‘teacher‘, ‘address‘: ‘三元桥一号院‘}
print(bb)   # 18
b4 = {name: chu, age: 18, job: teacher, address: 三元桥一号院}

print(b4.popitem())    # (‘address‘, ‘三元桥一号院‘)
print(b4.popitem())    # (‘job‘, ‘teacher‘)
print(b4.popitem())    # (‘age‘, 18)
print(b4.popitem())    # (‘name‘, ‘chu‘)
# print(b4.popitem())    # KeyError: ‘popitem(): dictionary is empty‘

五、序列解包

5.1 序列解包

# 5.1 序列解包
a,b,c = 10,20,30
a1,b1,c1 = (20,30,40)
(a2,b2,c2) = (40,50,60)
[a3,b3,c3] = [1,2,3]
print(a,b,c)    # 10 20 30
print(a1,b1,c1) # 20 30 40
print(a2,b2,c2) # 40 50 60
print(a3,b3,c3) # 1 2 3

 5.2 字典的序列解包时,默认是对键进行操作
       如果对值进行操作,x.values()
       如果对键值对进行操作,x.items()

# 5.2 字典的序列解包时,默认是对键进行操作
# 如果对值进行操作,x.values()
# 如果对键值对进行操作,x.items()

b5 = {name: chu, age: 18, job: teacher, address: 三元桥一号院}

x,y,z,o = b5
print(x,y,z,o)    # name age job address

x1,y1,z1,o1 = b5.values()
print(x1,y1,z1,o1) # chu 18 teacher 三元桥一号院

x2,y2,z2,o2 = b5.items()
print(x2,y2,z2,o2) # (‘name‘, ‘chu‘) (‘age‘, 18) (‘job‘, ‘teacher‘) (‘address‘, ‘三元桥一号院‘)

 

以上是关于Python3-2020-测试开发-8- 字典dict的主要内容,如果未能解决你的问题,请参考以下文章

Python3-2020-测试开发-11- 循环

Python3-2020-测试开发-11- 循环

Python3-2020-测试开发-2- Python3之turtle模块使用

Python3-2020-测试开发-20- 面向对象之封装,继承,多态

Python3-2020-测试开发-5- 基本运算符和复合运算符

Python3-2020-测试开发-20- Python中装饰器@property