目录
创建和使用字典
定义:字典由键及其相应的值组成,这种键-值对称为项(item)。
每个键与其值之间都用冒号(:)分隔,项之间用逗号分隔,而整个字典放在花括号内。
1、dict
定义:使用函数dict[插图]从其他映射(如其他字典)或键-值对序列创建字典。
可使用关键字实参来调用这个函数
2、 基本的字典操作
len(d)返回字典d包含的项(键-值对)数。
d[k]返回与键k相关联的值。
d[k] = v将值v关联到键k。
del d[k]删除键为k的项。
k in d检查字典d是否包含键为k的项。
键的类型:字典中的键可以是整数,但并非必须是整数。字典中的键可以是任何不可变的类型,如浮点数(实数)、字符串或元组。
字典实例:
people={
'Alice':{
'phone':'2341',
'addr':'Foo drive 23'
},
'Beth':{
'phone':'9102',
'addr':'Bar street 42'
},
'Cecil':{
'phone':'3158',
'addr':'Baz avenue 90'
},
}
labels={
'phone':'phone number',
'addr':'address'
}
name=input('Name:')
request=input('Phone number (p) or address (a)?')
if request =='p':key='phone'
if request =='a':key='addr'
if name in people:print("{}'s {} is {}.".format(name,
labels[key],people[name][key]))
3、将字符串格式设置功能用于字典-(format_map)
定义:可在字典中包含各种信息,这样只需在格式字符串中提取所需的信息即可。为此,必须使用format_map来指出你将通过一个映射来提供所需的信息。
4、字典方法
4.1、clear
定义:方法clear删除所有的字典项,这种操作是就地执行的(就像list.sort一样),因此什么都不返回(或者说返回None)。
注:两个字典共用时,要删除原来的字典的所有元素,必须使用clear。
1.无clear,对另外的字典无影响
2.clear,删除原来的字典所有元素
4.2、copy
定义:方法copy返回一个新字典,其包含的键-值对与原来的字典相同(这个方法执行的是浅复制,因为值本身是原件(修改时为值),而非副本)。
(tip:当替换副本中的值时,原件不受影响。然而,如果修改副本中的值(就地修改而不是替换),原件也将发生变化,因为原件指向的也是被修改的值
为避免这种问题有:执行深复制,即同时复制值及其包含的所有值
4.2.1、deepcopy
4.3、fromkeys
定义:方法fromkeys创建一个新字典,其中包含指定的键,且每个键对应的值都是None。
也可直接对dict调用方法fromkeys。(dict是所有字典所属的类型
默认值None,可提供特定的值。
4.4、get
定义:方法get为访问字典项提供了宽松的环境。通常,如果你试图访问字典中没有的项,将引发错误。
>>> print(d.get('name'))
None
Tip:可指定“默认”值,这样将返回你指定的值而不是None。
>>> d.get('name', 'N/A')
'N/A'
4.5、items
定义:方法items返回一个包含所有字典项的列表,其中每个元素都为(key, value)的形式。字典项在列表中的排列顺序不确定。
>>> d = {'title': 'Python Web Site', 'url': 'http://www.python.org', 'spam': 0}
>>> d.items()
dict_items([('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python Web Site')])
Tip:返回值属于一种名为字典视图的特殊类型。
视图的一个优点是不复制,它们始终是底层字典的反映.
>>>d['spam']=1
>>>d.items()
dict_items([('url', 'http://www.python.org'), ('spam', 1), ('title', 'Python Web Site')])
4.6、keys
定义:方法keys返回一个字典视图,其中包含指定字典中的键。
>>>d.keys()
dict_keys(['title','url','spam'])
4.7、pop
定义:方法pop可用于获取与指定键相关联的值,并将该键-值对从字典中删除。
>>> d = {'x': 1, 'y': 2}
>>> d.pop('x')
1
>>> d
{'y': 2}
4.8、popitem
定义:方法popitem类似于list.pop,但list.pop弹出列表中的最后一个元素,而popitem随机地弹出一个字典项,因为字典项的顺序是不确定的,没有“最后一个元素”的概念。
>>> d = {'url': 'http://www.python.org', 'spam': 0, 'title': 'Python Web Site'}
>>> d.popitem()
('url', 'http://www.python.org')
>>> d
{'spam': 0, 'title': 'Python Web Site'}
Tip:虽然popitem类似于列表方法pop,但字典没有与append(它在列表末尾添加一个元素)对应的方法。这是因为字典是无序的,类似的方法毫无意义。
4.9、setdefault
定义:方法setdefault有点像get,setdefault还在字典不包含指定的键时,在字典中添加指定的键-值对。
>>> d = {}
>>> d.setdefault('name', 'N/A')
'N/A'
>>> d
{'name': 'N/A'}
>>> d['name'] = 'Gumby'
>>> d.setdefault('name', 'N/A')
'Gumby'
>>> d
{'name': 'Gumby'}
Tip:指定的键不存在时,setdefault返回指定的值并相应地更新字典。如果指定的键存在,就返回其值,并保持字典不变。与get一样,值是可选的;如果没有指定,默认为None。
4.10、update
定义:方法update使用一个字典中的项来更新另一个字典,将其项添加到当前字典中。如果当前字典包含键相同的项,就替换它。
>>>d={'title':1,'url':2,'spam':3}
>>>x={'title':2}
>>>d.update(x)
d
{'title'2,'url',2,'spam':3}
4.11、values
定义:方法values返回一个由字典中的值组成的字典视图。
>>> d = {}
>>> d[1] = 1
>>> d[2] = 2
>>> d[3] = 3
>>> d[4] = 1
>>> d.values()
dict_values([1, 2, 3, 1])