创建字典
字典元素是键值对形式,键:值。键必须是不可变类型,键在字典中是唯一的,值可以相同。
# 赋值创建
d = {} # 创建空字典
d1 = {'a':1, 'b':2}
# dict实例化创建
d2 = dict() # 创建空字典
d3 = dict([('a', 1), ('b', 2)]) # 列表每个元素包含两个元素
d4 = dict(a=1, b=2) # 直接把键值对绑定在一起,name=value
print(d3, d4)
# d5 = {[1, 2]: 'a'} # 字典键必须为不可变类型,不能是列表
# 字典推导公式
d5 = {i: i**3 for i in range(3)}
print(d5)
# 通过zip函数生成字典
ls1 = ['a', 'b', 'c']
ls2 = [1, 2, 3]
d6 = dict(zip(ls1, ls2)) # zip函数把两个迭代对象对应位置的元素打包成元组
print(d6)
# 通过键来操作字典
print(d1['a']) # 通过键访问字典元素
d1['a'] = 10 # 键存在,修改字典值
d1['c'] = 3 # 键不存在,增加元素
del d1['b'] # 删除字典元素
print(d1)
字典的值可以是函数
def add(x):
return x + x
d = dict(fun=add) # 函数作为字典的值
print(d)
print(d['fun'](3))
d1 = dict(fun=lambda x: x + x) # lambda函数作为字典的值
print(d1)
print(d1['fun'](3))
字典转为其他容器
# 字典生成列表、元组、集合,元素只包含字典的键
d = {'a': 1, 'b': 2}
print(list(d))
print(tuple(d))
print(set(d))
# 单元素的列表、元组和集合不能转换为字典
ls = [("a", 1), ("b", 2)] # 列表生成字典时每个元素均包含两个元素
d1 = dict(ls)
print(d1)
遍历字典
d = {"a":1, "b":2}
for key in d.keys(): # 遍历字典的键
print(key, end=" ")
print()
for value in d.values(): # 遍历字典的值
print(value, end=" ")
print()
for k, v in d.items(): # 遍历字典的键值对
print(k, v, end=" ")
print()
for i in d: # 对字典直接遍历只返回字典的键
print(i, end=" ")
print()
# 用in检查某元素是否在字典内时只能检查字典的键
if "a" in d:
print("a is in dictionary d.")
if 1 in d:
print("1 is in dictionary d.")
字典方法
d = {"a":1, "b":2}
v = d.pop('a') # 若键存在删除键值对并返回对应的值
v1 = d.pop('c', 0) # 若键不存在,返回设置的默认值,若没有设定默认值则抛出KeyError
print(d, v, v1, sep='; ')
v2 = d.get('a', 0) # 若键存在则返回对应的值,若该键不在字典中返回设置的默认值
v3 = d.setdefault('c', 3) # 若键存在则返回对应的值,若键不存在则在字典中添加键和默认值,并返回默认值
print(d, v2, v3, sep='; ')
d1 = {'c':10, 'd':3}
d.update(d1) # 合并字典,若被合并的字典的键已经存在则更新对应的值
print(d1)