Python字典

63次阅读
没有评论

共计 1708 个字符,预计需要花费 5 分钟才能阅读完成。

获取值

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'}

正文完
post-qrcode
 0
三毛
版权声明:本站原创文章,由 三毛 于2023-08-14发表,共计1708字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)