Python中的dict(字典)是一种非常灵活且强大的数据结构,用于存储键值对(key-value pairs)
创建字典 dict
my_dict = {'name':'Tom','age':18,'city':'Shang Hai'}
print(my_dict)
# 输出 {'name': 'Tom', 'age': 18, 'city': 'Shang Hai'}
访问字典
print(my_dict['name'])
# 输出 Tom
添加元素
my_dict['card_num'] = '42829929919192901290'
print(my_dict)
# 输出 {'name': 'Tom', 'age': 18, 'city': 'Shang Hai', 'card_num': '42829929919192901290'}
修改元素
my_dict['age'] = 88
print(my_dict)
# 输出 {'name': 'Tom', 'age': 88, 'city': 'Shang Hai', 'card_num': '42829929919192901290'}
删除元素 - del指定key
del my_dict['name']
print(my_dict)
# 输出 {'age': 88, 'city': 'Shang Hai', 'card_num': '42829929919192901290'}
删除元素 - pop 返回被删除的值
del_ele = my_dict.pop('age')
print(del_ele)
# 输出 88
print(my_dict)
# 输出 {'city': 'Shang Hai', 'card_num': '42829929919192901290'}
删除整个字典
# del my_dict
my_dict.clear()
获取最后一对键值对 popitem() Python 3.7+版本以上可以
my_dict = {'name':'Tom','age':18,'city':'Shang Hai'}
last_item = my_dict.popitem()
print(last_item)
# 输出 ('city', 'Shang Hai')
print(my_dict)
# 输出{'name': 'Tom', 'age': 18}
# 总结: 通过popitem()获取最后一对键值对,返回的对象为元组
# 原字典会自动去掉最后一对键值对
检查键是否存在
if 'name' in my_dict:
print(True)
else:
print(False)
遍历字典
遍历所有的key
for key in my_dict: # 或者 for key in my_dict.keys()
print(key)
# 输出: name age
遍历所有的value
for value in my_dict.values():
print(value)
# 输出 Tom 18
遍历键值对
for key, value in my_dict.items():
print('key:',key,'value:',value)
# 输出: key: name value: Tom
# key: age value: 18
遍历键和索引(Python3.7+保持插入顺序,之前版本字典是无序的)
for index, key in enumerate(my_dict):
print(index,key)
# 输出:
# 0 name
# 1 age
for index, (key,value) in enumerate(my_dict.items()):
print(index,key,value)
# 输出
# 0 name Tom
# 1 age 18
字典推导式
my_dict = {x: x**3 for x in range(6)}
print(my_dict)
# 输出:{0: 0, 1: 1, 2: 8, 3: 27, 4: 64, 5: 125}
字典扩展与注意点
1. 键的唯一性
字典中的键必须是唯一的,但值可以重复。
2. 键的类型
键可以是任何不可变类型,如字符串、数字或元组,但不能是列表或字典等可变类型。
3.键的排序
Python 3.7+ 的字典保持了插入顺序,但在之前的版本中,字典是无序的。如果你需要有序字典,可以使用collections.OrderedDict。
4.默认值
使用get()方法访问字典时,可以提供一个默认值,当键不存在时返回该默认值,而不是抛出KeyError。
5.可变性和哈希性
由于字典的键必须是不可变的,因此你不能使用列表或字典作为键。此外,所有用作字典键的对象都必须是可哈希的(即它们的哈希值在对象的生命周期内不会改变)。
6.内存和性能
虽然字典提供了快速的查找、插入和删除操作(平均时间复杂度为O(1)),但它们可能会消耗更多的内存,特别是在存储大量小对象时。
标签:name,dict,key,print,my,字典
From: https://www.cnblogs.com/bengguo/p/18324750