Python 从入门到出家 - 字典
后知后觉 暂无评论

Python 中字典和列表完全不同,字典里的对象是无序的,它是通过一对对的键和值来反映一种映射关系。

字典里每个键都是唯一的,我们可以通过键来存取对应的值,而不能像列表那样通过位置来进行索引。

创建

创建一个字典很容易,可以使用以下语句定义一个词典

D1 = {
    'name': {'first': 'Bob', 'last': 'Smith'},
    'job': ['dev', 'mgr'],
    'age': 35,
    'addr': 'Los Angeles'
}
print(D1)
print(type(D1))
# 输出
{'name': {'first': 'Bob', 'last': 'Smith'}, 'job': ['dev', 'mgr'], 'age': 35, 'addr': 'Los Angeles'}
<class 'dict'>

可以看到字典可以好汉任意数据类型,即所谓的异构性,甚至可以嵌套字典结构,并且没有顺序,即所谓的无序性

利用键值即可取出其中的变量

D1 = {
    'name': {'first': 'Bob', 'last': 'Smith'},
    'job': ['dev', 'mgr'],
    'age': 35,
    'addr': 'Los Angeles'
}
print(D1['age'])
# 输出
35

补充一点,如果要读取一个字典中的键,但是并不确定字典中是否存在,那么可以用 in 进行判断。

D2['name'] = 'John'
D2['age'] = 24
# 错误写法
print(D2['sex'])
## 输出
Traceback (most recent call last):
  File "/Users/kane/PycharmProjects/LearnPython/main.py", line 224, in <module>
    print(D2['sex'])
KeyError: 'sex'
# 方式1
print('sex' in D2)
## 输出
False
# 方式2
if 'sex' in D2:
    print(D2['sex'])
else:
    print('Error')
## 输出
Error

可以直接利用赋值语句对字典进行填充

D2 = {}

D2['name'] = 'John'
D2['age'] = 24
print(D2)
# 输出
{'name': 'John', 'age': 24}

但是如果键值还未定义或者由程序动态生成,那么上述方法就有点愚蠢了,可以使用动态生成字典的方式进行实现

K_LIST = ['x', 'y', 'z']
V_LIST = [3, 4, 5]
D3 = dict(zip(K_LIST, V_LIST))
print(D3)
# 输出
{'x': 3, 'y': 4, 'z': 5}

也可以用列表或元组直接进行生成字典

D4 = dict([('a',1),('b',2),('c',3)])
print(D4)
# 输出
{'a': 1, 'b': 2, 'c': 3}

字典合并

D5 = {
    'name': 'John',
    'age': 18,
    'like': ['swim', 'jump'],
    'sex': 'man'
}
print(D5)
D6 = {
    'name': 'Kane',
    'qq': 123456,
    'link': 'www.xx.com'
}
D5.update(D6)
print(D5)
# 输出
{'name': 'John', 'age': 18, 'like': ['swim', 'jump'], 'sex': 'man'}
{'name': 'Kane', 'age': 18, 'like': ['swim', 'jump'], 'sex': 'man', 'qq': 123456, 'link': 'www.xx.com'}
小贴士:需要注意的是如果字典中有冲突的键,那么会进行无规律覆盖,应尽量避免此类情况,谨慎使用此方法。

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。