本文几乎囊括了字典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'}

字典由大括号{}开头和结束,冒号:前表示键,冒号后表示值,多个键-值对用逗号分隔。键作为值索引引用,如

cat['size']   # 'fat'

dict构造器可以接受多种形式的参数,如果没有任何参数创建空字典。参数必须要有两个部分,并且都要求是可迭代对象,第一部分作为键,第二部分作为值。

dict([(a, 100), (b, 200)])   # {'a': 100, 'b': 200}
dict(one=1, two=2, three=3)  # {'one': 1, 'two': 2, 'three': 3}

还可以用列表推导式产生字典

{x: x**2 for x in range(3)}  # {0: 0, 1: 1, 2: 4}

取值(get(), setdefault())

如果需要获得某个键的值,则只需要用类似于下标的方式输入键。

cat = {'size': 'fat', 'color': 'gray', 'disposition': 'loud'}
cat['size']  # 'fat'

如果输入的键不存在,则抛出一个KeyError的异常。

如果不希望抛出异常,可以使用get()方法。get()方法有 2 个参数,第 1 个参数为键,第 2 参数表示如果该键不存在时,返回的备用值,默认为None。如

cat.get('name', 0)   # 0

setdefault()方法用于返回一个值,如果键不存在,则向字典添加一个键值对并返回值,这个值默认为None

cat.setdefault('name', 'Kitty')

修改和添加值(update())

通过下标的方式可以直接修改值。

cat['color'] = 'black'   # {'size': 'fat', 'color': 'black', 'disposition': 'loud'}

如果键不存在,则添加一个键值对。

cat['name'] = 'Kitty'  
# {'size': 'fat', 'color': 'black', 'disposition': 'loud', 'name': 'Kitty'}

update()方法可以向字典中添加值,参数可以是字典,也可以其它可迭代的键值对。

cat.update({'name': 'Kitty'})  
# {'size': 'fat', 'color': 'gray', 'disposition': 'loud', 'name': 'Kitty'}

|也可以其起到update()的作用,它必须作用于字典。

cat |= {'name': 'Kitty'}

|为python 3.8新增内容。

删除(del, pop(), popitem() clear())

del可以删除一个键值对。如果键不存在则抛出异常。

del cat['name']

popdel删除的区别在于pop会返回值,而del不会。

cat.pop('size')    # 返回'gray', cat = {'color': 'gray', 'disposition': 'loud'}

如果键不存在,可以设置默认返回值,否则抛出异常。

cat.pop('name', 'No name')   # 'No name'

pop()返回的只有值,如果需要返回键值对,则使用popitem()方法。

cat.popitem()

该方法从字典中任意删除值,适合于迭代。

clear()方法清空字典。

cat.clear()   # {}

长度(len())

len()返回字典中有多少个键值对。

len(cat)

键、值、对(keys(), values(), items(), list(), reversed())

keys()values()items()分别对应于字典的键、值和键-值对,数据类型分别是dict_keysdict_valuesdict_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')])

list()方法可以获得字典的键列表。

list(cat)         # ['size', 'color', 'disposition']
list(cat.keys())  # 等效

reversed()返回一个逆序的键迭代器。也可以直接逆序键值对。

reversed(cat)
reversed(cat.keys()) # 等效
reversed(cat.items())

reversed()为python 3.8新增内容。

in和not in

检查某个键或值是否存在于字典中,返回TrueFalse。如

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

上面代码中keys()可以省略。如

'name' in cat   # 相当于 'name' in cat.keys()

迭代(iter())

iter()返回字典键的迭代器。

iter(cat)
iter(cat.keys()) # 等效

复制(copy())

copy()返回字典的浅拷贝。还可以使用copy模块