zzxworld

Python dict 字典操作学习总结

Python dict 字典操作学习总结

字典(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', '美元')