获取值
dic = {'name':'李小龙', 'age':18}
data = dic.get('age') # 键不存在,默认返回None
data2 = dic.get('sex', 0) # 键不存在,返回设置的默认值
print(data) # 结果为:18
print(data2) # 结果为:0
所有的键、值
data = dic.keys() # 以列表返回所有的键
data2 = dic.values() # 以列表返回所有的值
data3 = dic.items() # 以列表返回可遍历的(键, 值)元组
print(data) # 结果为:dict_keys(['name', 'age'])
print(data2) # 结果为:dict_values(['李小龙', 18])
print(data3) # 结果为:dict_items([('name', '李小龙'), ('age', 18)])
设置值
dic = {'name':'李小龙', 'age':18}
dic.setdefault('sex', 1) # 键不存在,新增键值对
print(dic) # 结果为:{'name': '李小龙', 'age': 18, 'sex': 1}
dic.setdefault('age', 19) # 键存在,不修改原字典内容
print(dic) # 结果为:{'name': '李小龙', 'age': 18, 'sex': 1}
更新键值对
dic = {'name':'李小龙', 'age':18}
dic.update({'age':19, 'sex':1}) # 键不存在直接添加,键存在则更新值
print(dic) # 结果为:{'name': '李小龙', 'age': 19, 'sex': 1}
移除键值对
dic = {'name':'李小龙', 'age':18}
dic.pop('age') # 移除指定键值对
print(dic) # 结果为:{'name': '李小龙'}
移除最后的键值对
dic = {'name':'李小龙', 'age':18, 'sex':1}
dic.popitem() # 移除最后的键值对
print(dic) # 结果为:{'name': '李小龙', 'age': 18}
字符串格式
>>> d = {'Beth': '10000', 'Alice': '10086'}
>>> "Beth's phone number is {Beth}".format_map(d)
"Beth's phone number is 10000"
字典方法
clear()
方法clear删除所有的字典项:
x = {}
y = x
print(y)
x['key'] = 'value'
print(y)
x.clear()
print(y)
输出结果如下:
{}
{'key': 'value'}
{}
copy()
方法copy返回一个新字典,其包含的键-值对与原来的字典相同(这个方法执行的是浅复制)
x = {'name': '李小龙', 'info': [18, '男']}
y = x.copy()
y['name'] = '李大龙'
y['info'].remove(18)
print(y) # {'name': '李大龙', 'info': ['男']}
print(x) # {'name': '李小龙', 'info': ['男']}
执行深复制,即同时复制值及其包含的所有值,可使用模块copy中的函数deepcopy:
from copy import deepcopy
x = {'name': '李小龙', 'info': [18, '男']}
y = deepcopy(x)
y['name'] = '李大龙'
y['info'].remove(18)
print(y) # {'name': '李大龙', 'info': ['男']}
print(x) #
{'name': '李小龙', 'info': [18, '男']}
fromkeys()
方法fromkeys创建一个新字典,其中包含指定的键,且每个键对应的值都是None。
>>> dict.fromkeys(['name', 'age'])
{'name': None, 'age': None}
>>> dict.fromkeys(['name', 'age'], 'unknown') # 不使用默认值None,可指定值
{'name': 'unknown', 'age': 'unknown'}