字典dict

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)),但它们可能会消耗更多的内存,特别是在存储大量小对象时。
posted @ 2024-07-26 10:10  文武双全·墨海纵横  阅读(58)  评论(0)    收藏  举报