本文几乎囊括了字典dict的全部使用方法,便于快速学习上手,也便于在使用时查阅。
其它类型的操作:字符串、列表、集合。
目录
- 字典
- 取值(get(), setdefault())
- 修改和添加值(update())
- 删除(del, pop(), popitem() clear())
- 长度(len())
- 键、值、对(keys(), values(), items(), list(), reversed())
- in和not in
- 迭代(iter())
- 复制(copy())
字典
字典由一个对象映射到另一个对象。字典的索引被称为键,最好不要是浮点数。字典的值可以是字典、列表或其它可变序列。键及其关联的值称为键-值对。
cat = {'size': 'fat', 'color': 'gray', 'disposition': 'loud'}
- 1
字典由大括号{
和}
开头和结束,冒号:
前表示键,冒号后表示值,多个键-值对用逗号分隔。键作为值索引引用,如
cat['size'] # 'fat'
- 1
dict
构造器可以接受多种形式的参数,如果没有任何参数创建空字典。参数必须要有两个部分,并且都要求是可迭代对象,第一部分作为键,第二部分作为值。
dict([(a, 100), (b, 200)]) # {'a': 100, 'b': 200}
dict(one=1, two=2, three=3) # {'one': 1, 'two': 2, 'three': 3}
- 1
- 2
还可以用列表推导式产生字典
{x: x**2 for x in range(3)} # {0: 0, 1: 1, 2: 4}
- 1
取值(get(), setdefault())
如果需要获得某个键的值,则只需要用类似于下标的方式输入键。
cat = {'size': 'fat', 'color': 'gray', 'disposition': 'loud'}
cat['size'] # 'fat'
- 1
- 2
如果输入的键不存在,则抛出一个KeyError
的异常。
如果不希望抛出异常,可以使用get()
方法。get()
方法有 2 个参数,第 1 个参数为键,第 2 参数表示如果该键不存在时,返回的备用值,默认为None
。如
cat.get('name', 0) # 0
- 1
setdefault()
方法用于返回一个值,如果键不存在,则向字典添加一个键值对并返回值,这个值默认为None
。
cat.setdefault('name', 'Kitty')
- 1
修改和添加值(update())
通过下标的方式可以直接修改值。
cat['color'] = 'black' # {'size': 'fat', 'color': 'black', 'disposition': 'loud'}
- 1
如果键不存在,则添加一个键值对。
cat['name'] = 'Kitty'
# {'size': 'fat', 'color': 'black', 'disposition': 'loud', 'name': 'Kitty'}
- 1
- 2
update()
方法可以向字典中添加值,参数可以是字典,也可以其它可迭代的键值对。
cat.update({'name': 'Kitty'})
# {'size': 'fat', 'color': 'gray', 'disposition': 'loud', 'name': 'Kitty'}
- 1
- 2
|
也可以其起到update()
的作用,它必须作用于字典。
cat |= {'name': 'Kitty'}
- 1
|
为python 3.8新增内容。
删除(del, pop(), popitem() clear())
del
可以删除一个键值对。如果键不存在则抛出异常。
del cat['name']
- 1
pop
与del
删除的区别在于pop
会返回值,而del
不会。
cat.pop('size') # 返回'gray', cat = {'color': 'gray', 'disposition': 'loud'}
- 1
如果键不存在,可以设置默认返回值,否则抛出异常。
cat.pop('name', 'No name') # 'No name'
- 1
pop()
返回的只有值,如果需要返回键值对,则使用popitem()
方法。
cat.popitem()
- 1
该方法从字典中任意删除值,适合于迭代。
clear()
方法清空字典。
cat.clear() # {}
- 1
长度(len())
len()
返回字典中有多少个键值对。
len(cat)
- 1
键、值、对(keys(), values(), items(), list(), reversed())
keys()
、values()
和items()
分别对应于字典的键、值和键-值对,数据类型分别是dict_keys
、dict_values
和dict_items
,它们的值不能被修改。可用于for
循环。
cat.keys() # dict_keys(['size', 'color', 'disposition'])
cat.values() # dict_values(['fat', 'gray', 'loud'])
cat.items() # dict_items([('size', 'fat'), ('color', 'gray'), ('disposition', 'loud')])
- 1
- 2
- 3
list()
方法可以获得字典的键列表。
list(cat) # ['size', 'color', 'disposition']
list(cat.keys()) # 等效
- 1
- 2
reversed()
返回一个逆序的键迭代器。也可以直接逆序键值对。
reversed(cat)
reversed(cat.keys()) # 等效
reversed(cat.items())
- 1
- 2
- 3
reversed()
为python 3.8新增内容。
in和not in
检查某个键或值是否存在于字典中,返回True
或False
。如
cat = {'size': 'fat', 'color': 'gray', 'disposition': 'loud'}
'name' in cat.keys() # False
'size' in cat.keys() # True
'name' not in cat.keys() # True
'size' not in cat.keys() # False
'fat' in cat.values() # True
- 1
- 2
- 3
- 4
- 5
- 6
上面代码中keys()
可以省略。如
'name' in cat # 相当于 'name' in ()
- 1
迭代(iter())
iter()
返回字典键的迭代器。
iter(cat)
iter(cat.keys()) # 等效
- 1
- 2
复制(copy())
copy()
返回字典的浅拷贝。还可以使用copy模块。