四. 字典
1. 字典是由键值对组成的,键和值间用冒号隔开,项之间用逗号隔开,整个字典由大括号表示。
2. 字典可以用dict创建,需要一个映射关系的参数(其他字典或包含多个元组的序列),也可以用关键字参数来创建字典。
>>> dict1 = {'age':42, 'name':'Sam', 'city':'New York'}
>>> dict2 = dict(dict1)
>>> dict3 = dict([('name','Sam'),('age',42)])
>>> dict4 = dict(name = 'Sam', age = 42)
>>> dict1
{'age': 42, 'name': 'Sam', 'city': 'New York'}
>>> dict2
{'age': 42, 'name': 'Sam', 'city': 'New York'}
>>> dict3
{'age': 42, 'name': 'Sam'}
>>> dict4
{'age': 42, 'name': 'Sam'}
3. 字典和序列类似的行为有:len、[]访问符、del删除、in成员资格检查。字典的[]可以直接完成插入的功能。
4. 可以用字典来格式化字符串。只要能在字典中找到字符串中的关键字,就能格式化字符串,不需要用到字典中的所有元素。字符串中的关键字要用括号括起来,后面接上正常的格式化控制符。
>>> "%(name)s's city is %(city)s" % dict1
"Sam's city is New York"
5. 字典方法:
1) clear:清空字典。原地操作,无返回值。
2) copy:浅复制字典。如果想深复制则要用deepcopy。
3) fromkeys:使用给定的键建立字典,每个值默认为None。
>>> dict.fromkeys(['name', 'age'])
{'age': None, 'name': None}
4) get:用[]访问字典中不存在的项时会出错,用get时则会返回None,也可以自定义这个返回值。
>>> print({}.get('name'))
None
>>> print({}.get('name', 'N/A'))
N/A
5) items:返回包含所有字典项的列表,其中每个键值对为一个元组。iteritems返回这个列表的迭代器。
>>> dict1.items()
dict_items([('age', 42), ('name', 'Sam'), ('city', 'New York')])
6) keys:返回包含所有键的列表。iterkeys:返回迭代器。
7) values:返回包含所有值的列表。itervalues:返回迭代器。
8) pop:删除指定的键值对,并返回这个值。
9) popitem:随机弹出并删除某项。在要依次处理并删除项时比较有用。
10) setdefault:设定字典中某键的默认值,如果只有键名则默认为None。当键不存在时会插入这个键,否则会返回当前键值而不改变它。
>>> dict3.setdefault('city')
>>> dict3
{'age': 42, 'name': 'Sam', 'city': None}
>>> dict3.setdefault('Nation','Nowhere')
'Nowhere'
>>> dict3
{'age': 42, 'Nation': 'Nowhere', 'name': 'Sam', 'city': None}
11) update:用一个字典项更新另外一个字典。新字典中的项会添加到旧字典中,并更新相同的项。