字典(dict)是 Python 的一种内置数据类型,其结构有点类似于 PHP 中的数组,以 key-value (键值对) 的方式来表示数据。这是一种在实际应用时会比较常用的数据类型,所以很有必要掌握其用法。
创建和定义字典
使用 {}
大括号可以创建一个空的 Python 字典:
data = {}
或是以 key-value 的方式初始化一个有数据的字典:
data = {'CNY': '人民币', 'USD': '美元'}
除了使用大括号,还可以通过 dict
函数来创建字典:
data = dict(CNY='人名币', USD='美元')
除了使用函数参数的方式指定字典内容,dict
函数还可以通过元组方式的对序列表来创建字典:
data = dict([('CNY', '人民币'), ('USD', '美元')])
添加或更新字典内容
通过关键字赋值的方式可以添加字典内容:
data['JPY'] = '日元'
更新字典内容使用上面同样的操作方式。因为 Python 字典的关键词具有唯一性,当给字典中已经存在的关键字赋值时,结果就是修改它的值为当前值。
从 Python3.9 开始, Python 字典还可以通过 |
符号把两个字典合并为一个新的字典:
data1 = {'CNY': '人民币', 'USD': '美元'}
data2 = {'JPY': '日元'}
data3 = data1 | data2
当 |
后面的字典关键字在它前面字典中已存在时,会覆盖第一个字典对应关键字的值。所以这也是另外一种添加或更新字典内容的方法。
更语义化的方式是使用字典对象的 update
函数:
data.update({'JPY': '日元'})
它的操作逻辑和以上类似,关键字不存在时新增,存在时更新值。
获取字典内容
使用关键字是最简单的字典内容访问方式:
>>> data['CNY']
'人民币'
也可以通过字典的 get
函数来访问:
>>> data.get('CNY')
'人民币'
使用 get
函数访问字典有一个附加功能,当访问的关键字在字典中不存在时,可以设置一个默认的返回值:
>>> data.get('ABC', '未知货币')
'未知货币'
使用 len
函数可以获取字典的键值条目数量:
>>> len(data)
2
使用 list
函数可以获取字典的关键字列表:
>>> list(data)
['CNY', 'USD']
Python 字典可通过 for ... in ...
循环语句访问内部键值条目。不过默认只能拿到关键字:
for k in data:
print('关键字: {},值: {}'.format(k, data[k]))
如果想在 for
语句后直接访问关键字和值,可以使用 items
函数的字典视图对象:
for k, v in data.items():
print(f'关键字: {k},值: {v}')
字典视图对象
字典视图是一种特殊的字典对象,它和字典中的键值条目是一种动态的映射绑定关系。使用这种对象可以根据需要方便的获取字典内容。字典提供了三个函数用来返回视图对象。
使用字典的 keys
函数可以访问字典的关键字列表视图对象:
>>> data.keys()
dict_keys(['CNY', 'USD'])
使用字典的 values
函数可以访问字典的值列表视图对象:
>>> data.values()
dict_values(['人民币', '美元'])
使用字典的 items
函数可以访问字典的键值对列表视图对象:
>>> data.items()
dict_items([('CNY', '人民币'), ('USD', '美元')])
删除字典
使用 del
函数可以删除字典中的指定关键字:
del data['USD']
如果要删除字典中的所有关键字,可以使用字典的 clear
函数:
data.clear()
使用字典的 pop
函数也可以按关键字删除字典内容,它会在删除的同时返回关键字对应的值。和 get
方法一样,如果要删除的关键字不存在,可以提供一个返回的默认值:
data.pop('ABC', '未知货币')
popitem
函数作用类似,不过它有些许区别。首先它不能指定关键字,其次它也不能指定默认值。它只能以 LIFO 后进先出的方式来删除字典内容,同时以一个元组的格式返回被删除的关键字和值。
>>> data.popitem()
('USD', '美元')