Python 的字典

Posted on Wed, 25 Dec 2024 16:10:33 +0800 by LiangMingJian


前言

Python 通过 class dict 实现映射关系,有且只有这一种标准映射类型。

除了列表,字典或其他可变类型,字典 dict 的键几乎可以是任何值。

字典的构建

通过花括号构建

map1 = {}
map2 = {'user': 'Python', 'age': 24}
map3 = {x: x for x in range(10)}
# map3 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}

通过类型构造器构建

map1 = dict()
map2 = dict(user='Python', age=24)
map3 = dict([('user', 'Python'), ('age', 24)])

字典的查找

d[key]返回键值。

map1 = {'user': 'Python', 'age': 24}

print(map1['user'])  # 输出:Python

key in d 或 key not in d判断字典是否存在某一个键。

map1 = {'user': 'Python', 'age': 24}

print('user' in map1)  # True
print('abc' in map1)  # False

d.get(key, default=None)返回字典中键为 key 的值,如果没有这个键值,则返回 default 所设置的内容。

d[key] 不同,没有键值的时候,d.get() 不会抛出异常。

map1 = {'user': 'Python', 'age': 24}  
  
print(map1.get('user'))  # 输出:Python
print(map1.get('abc'))  # 输出:None

d.items()返回一个由键值对 (key, value) 组成的字典视图。

字典视图是一个动态的视图对象,当字典变更时,字典视图也随之变化,字典视图支持通过迭代来处理字典数据,对字典成员进行处理。

map1 = {'user': 'Python', 'age': 24}  
  
for key, value in map1.items():
    print(f'{key}: {value}')  # 输出:user: Python 和 age: 24

d.keys()返回一个由所有键组成的字典视图。

map1 = {'user': 'Python', 'age': 24}  
  
for key in map1.keys():
    print(f'{key}')  # 输出:user 和 age

d.values()返回一个由所有值组成的字典视图。

map1 = {'user': 'Python', 'age': 24}  
  
for value in map1.values():
    print(f'{value}')  # 输出:Python 和 24

list(d)返回一个由所有键组成的列表。

map1 = {'user': 'Python', 'age': 24}  
  
print(list(map1))  # 输出: ['user', 'age']

len(d)返回字典的长度。

map1 = {'user': 'Python', 'age': 24}  
  
print(len(map1))  # 输出: 2

字典的增改

d[key] = value:如果键值不存在,则新增键值,如果存在则修改键值

map1 = {'user': 'Python', 'age': 24}
map1['user'] = 'ABC'
map1['number'] = '00001'

print(map1['user'])  # 输出:ABC
print(map1['number'])  # 输出:00001

d.setdefault(key, default=None)如果字典存在键 key,则返回对应的值,如果不存在,则插入键为 key,值为 default 的数据。

map1 = {'user': 'Python', 'age': 24}
map1.setdefault('user')
map1.setdefault('number')

print(map1['user'])  # 输出:Python
print(map1['number'])  # 输出:None

d.update(**kwargs | mapping | iterable)允许通过传入关键字参数,字典,一个包含键值对 (key, value) 的可迭代对象(如列表)来更新字典数据。

map1 = {'user': 'Python', 'age': 24}  
map1.update(user='abc')  
map1.update([('number', '00001'), ('area', 'school')])  
map1.update({'type': 0})  
  
print(map1)
# 输出:{'user': 'abc', 'age': 24, 
#       'number': '00001', 'area': 'school',
#       'type': 0}

d = d | other合并 d 和 other 两者的键值,两者必须是字典,当 d 和 other 存在相同键时,以 other 的数据为准。

Python 版本 3.9 后才支持。

map1 = {'user': 'Python', 'age': 24}  
map1 = map1 | {'number': '00001'}  
  
print(map1)
# 输出:{'user': 'Python', 'age': 24, 'number': '00001'}

d |= other合并 d 和 other 两者的键值,other 可以是字典,也可以是包含键值对 (key, value) 的可迭代对象(如列表),当 d 和 other 存在相同键时,以 other 的数据为准。

Python 版本 3.9 后才支持。

map1 = {'user': 'Python', 'age': 24}  
map1 |= [('number', '00001'), ('type', 0)]  
  
print(map1)
# 输出:{'user': 'Python', 'age': 24, 'number': '00001', 'type': 0}

字典的删除

del d[key]删除某个键值

map1 = {'user': 'Python', 'age': 24}
del map1['user']

print(map1)  # 输出:{'age': 24}

d.pop(key, default)返回某个键值,然后从字典移除该键值,如果键不存在,则返回 default,如果没有设置 default,则抛出异常。

map1 = {'user': 'Python', 'age': 24}  
data1 = map1.pop('user')  
data2 = map1.pop('type', 1)  
  
print(map1)  # 输出:{'age': 24}
print(data1)  # 输出:Python
print(data2)  # 输出:1

d.clear():清空字典

map1 = {'user': 'Python', 'age': 24}
map1.clear()

print(map1)  # 输出:{}

————————————

映射类型 dict-官方文档