4.1 basic concept
- mapping(映设):通过key访问values;
- dictionary是Python中唯一内置的映射类型;
- dictionary格式:每个 item {key1: value1, key2: value2},key不得重复;
- dict、list、tuple、str 均为类,而非函数;
- key应为不可变类型:浮点数(实数)、string or tuple ;
value 则不作要求;
- 字典各项无序存放,亦可将字典中的数据读取后,存放于list中,排序后再读取,即可实现有序输出;
4.2 创建和使用dictionary
4.2.1 类 dict
>>> items = [('name', 'Gumby'), ('age', 42)]
>>> d = dict(items)
>>> d
{'name': 'Gumby', 'age': 42}
>>> d = dict(name = 'Gumby', age = 42)
>>> d
{'name': 'Gumby', 'age': 42}
4.2.2 基本的字典操作
4.2.3 将 string 格式设置功能用于 dictionary
>>> phonebook = {'Beth': '9102', 'Alice':'2341', 'Cecil':'3528'}
>>> "Cecil's phone number is {Cecil}.".format_map(phonebook)
"Cecil's phone number is 3528."
4.2.4 dictionary的方法
>>> d = {}
>>> d['name'] = 'Gumby'
>>> d['age'] = 42
>>> return_value = d.clear()
>>> d
{}
>>> print(return_value)
None
>>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> x = {}
>>> x
{}
>>> y
{'key': 'value'}
>>> x ={}
>>> y = x
>>> x['key'] = 'value'
>>> x.clear()
>>> x
{}
>>> y
{}
>>> x = {'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
>>> y = x.copy()
>>> y['username'] = 'mlh'
>>> y['machine'].remove('baz')
>>> x
{'username': 'admin', 'machines': ['foo', 'baz']}
>>> y
{'username': 'mhl', 'machines': ['foo', 'baz']}
>>> from copy import deepcopy
>>> d = {}
>>> d['names'] = ['Alfred', 'Bertrand']
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d['names'].append('Clive')
>>> c
{'names': ['Alfred', 'Bertrand', 'Clive']}
>>> dc
{'names': ['Alfred', 'Bertrand']}
>>> dict.fromkeys(['name', 'age'])
{'name': None, 'age': None}
>>> dict.fromkeys(['name', 'age'], '(unknown)')
{'name': '(unknown)', 'age': '(unknown)'}
>>> d = {}
>>> print(d.get('name'))
None
>>> d ={}
>>> d.get('name', 'N/A')
N/A
- .items()
- .items() 返回 字典视图 ,可迭代、不复制;
- 字典视图为 list ,list 中的元素为(key, value)形式;
>>> d = {'title': 'Python web site', 'url': 'http://www.python.org', 'spam': 0}
>>> d.items()
dict_items([('title', 'Python web site'), ('url', 'http://www.python.org'), ('spam', 0)])
>>> it = d.items()
>>> d['spam'] = 1
>>> ('spam', 0) in it
Flase
>>> d['spam'] = 0
>>> ('spam', 0) in it
True
>>> d.keys()
dict_keys(['title', 'url', 'spam'])
>>> d = {1:1, 2:2, 3:3, 4:1}
>>> d.values()
dict_values([1, 2, 3, 1])
>>> d = {'x': 1, 'y': 2}
>>> d.pop('x')
1
>>> d = {'url': 'http://python.org','spam':0, 'title':'Python web site'}
>>> d.popitem()
('title', 'Python web site')
>>> d = {}
>>> print(d.setdefault('name'))
None
>>> d
{'name': None}
>>> d = {}
>>> d.setdefault('name', 'N/A')
'N/A'
>>> d
{'name': 'N/A'}
>>> d = {
'title': 'Python web site',
'url': 'http://www.python.org',
'change': 'Mar 14 22:09:15 MET 2016'
}
>>> x = {'title': 'Python Language Website', 'change': 'a litter change'}
>>> d.update(x)
>>> d
{'title': 'Python Language Website',
'url': 'http://www.python.org',
'change': 'a litter change'}