字典
字典是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下。键可能是数、字符串或元组。
字典的基本操作
比如你想要在python中创建一个电话簿,使用字典是最合适的。字典由键及其相应的值组成,这种键—值对称为项(item)。在下面的示例中,键为名字,而值为电话号码。每个键与其值之间都用冒号(:)分隔,项之间用逗号分隔,而整个字典放在花括号内。空字典(没有任何项)用两个花括号表示,类似于下面这样:{}。
>>>phonebook = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
>>>phonebook['Cecil']
'3158'
1.函数 dict
#可使用函数dict从其他映射(如其他字典)或键值对序列创建字典。
>>>items = [('name', 'Gumby'), ('age', 42)]
>>>d = dict(items)
>>>d
{'age': 42, 'name': 'Gumby'}
>>> d['name']
'Gumby'
#还可使用关键字实参来调用这个函数
>>>d = dict(name='Gumby', age=42)
>>>d
{'age': 42, 'name': 'Gumby'}
2.自动添加
即便是字典中原本没有的键,也可以给它赋值,这将在字典中创建一个新项。
然而,如果不使用append或其他类似的方法,就不能给列表中没有的元素赋值。
>>>x = []
>>>x[42] = 'Foobar'
Traceback (most recent call last):
File "<stdin>", line 1, in ?
IndexError: list assignment index out of range
>>>x = {}
>>>>x[42] = 'Foobar'
>>>x
{42: 'Foobar'}
3.format_map
>>>phonebook
{'Beth': '9102', 'Alice': '2341', 'Cecil': '3258'}
>>>"Cecil's phone number is {Cecil}.".format_map(phonebook)
"Cecil's phone number is 3258."
4.clear
删除所有的字典项
>>> d={"name":"Tom"}
>>> d.clear()
>>> d
{}
5.copy
浅复制
没有拷贝子对象,所以原始数据改变,子对象会改变。
>>> x
{'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
>>> y=x.copy()
>>> y['username']=1
>>> x
{'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
>>> y['machines'].remove('bar')
>>> y
{'username': 'mlh', 'machines': ['foo', 'baz']}
>>> x
{'username': 'admin', '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']}
6.fromkeys
#方法fromkeys创建一个新字典,其中包含指定的键,且每个键对应的值都是None。
>>> {}.fromkeys(['name', 'age'])
{'age': None, 'name': None}
集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合的内置方法