映射让你能够使用任何不可变的对象(最常用的是字符串和元组)来标识其元素。字典是Python中唯一的内置映射类型。在字典中,键必须是独一无二的。可使用函数dict
从其他映射或键-值对序列创建字典。
person = [('name', 'watkins'), ('age', '42'), ('school', 'swjtu')]
pDict = dict(person)
print(pDict) # {'name': 'watkins', 'age': '42', 'school': 'swjtu'}
pDict['address'] = 'X9211' # 自动添加
del pDict['school'] # 不存在将引起`KeyError`异常
print(pDict) # {'name': 'watkins', 'age': '42', 'address': 'X9211'}
使用format_map
方法指出将通过一个映射来提供所需的信息。
person = {'name': 'watkins', 'age': '42', 'address': 'X9211'}
print("the name of person is {name}".format_map(person)) # the name of person is watkins
方法 | 描述 | 说明 |
---|---|---|
clear |
删除所有的字典项 | 就地执行的 |
copy |
返回原来字典的副本 | 替换副本中的值原件不受影响,修改副本中的值原件也将发生变化 浅复制。可使用 模块copy 中的函数deepcopy 执行深复制 |
fromkeys |
创建一个新字典 其中包含指定的键且每个键对应的值都是None |
可指定特定的值 可直接使用字典类型dict将其作为类方法来调用 |
get |
访问字典项 | 存在则返回值,不存在返回指定的默认值 |
items |
返回一个包含所有字典项的字典视图 | (key, value) 形式,字典项在列表中的排列顺序不确定视图始终是底层字典的反映,不进行复制 |
keys |
返回一个包含指定字典中的键的字典视图 | |
pop |
获取与指定键相关联的值并将该键-值对从字典中删除 | 不存在将引起KeyError 异常 |
popitem |
随机地弹出一个字典项 | 可使用模块collections 中OrderedDict类 以可预测的顺序弹出字典项 |
setdefault |
获取与指定键相关联的值 | 不包含指定的键时在字典中添加指定的键-值对 可使用 模块collections 中的defaultdict类 |
update |
使用一个字典中的项来更新另一个字典 | |
values |
返回一个由字典中的值组成的字典视图 | 可能包含重复的值 |
from copy import deepcopy
person = {'name': 'watkins', 'address': ['X9211', 'H071408']}
pc = person.copy()
pdc = deepcopy(person)
pc['name'] = 'pjing'
pc['address'].append('L3A2031')
print(person) # {'name': 'watkins', 'address': ['X9211', 'H071408', 'L3A2031']}
print(pc) # {'name': 'pjing', 'address': ['X9211', 'H071408', 'L3A2031']}
person['address'].append('L3A2029')
print(pc) # {'name': 'pjing', 'address': ['X9211', 'H071408', 'L3A2031', 'L3A2029']}
print(pdc) # {'name': 'watkins', 'address': ['X9211', 'H071408']}
print(dict.fromkeys(['name', 'age'], 'False')) # {'name': 'False', 'age': 'False'}
print(person.get('baby', 'False')) # False
# 创建有序字典,popitem按照后进先出原则删除最后加入的元素
from collections import OrderedDict
pOrd = OrderedDict([('b', 'beta'), ('a', 'alpha'), ('c', 'city')])
print(pOrd.popitem()) # ('c', 'city')
print(pOrd) # OrderedDict([('b', 'beta'), ('a', 'alpha')])
# defaultdcit接受一个工厂函数作为参数,当键不存在时返回的是工厂函数的默认值。
# 工厂函数可以是list、set、str和int等
from collections import defaultdict
# 保留元素插入的顺序,使用列表list
pLst = defaultdict(list)
pLst['a'].append('apple')
pLst['a'].append('apple')
pLst['b'].append('beta')
print(pLst) # defaultdict(, {'a': ['apple', 'apple'], 'b': ['beta']})
# 消除重复元素,使用集合set
pSet = defaultdict(set)
pSet['a'].add('apple')
pSet['a'].add('apple')
pSet['b'].add('beta')
print(pSet) # defaultdict(, {'a': {'apple'}, 'b': {'beta'}})
(最近更新:2019年04月11日)