字典是python中唯一内建的映射类型。
特点:
没有特殊的顺序;
存储在特定的键(key)下,可以是数字、字符串甚至是元组
创建和使用字典
phonebook= {‘Alice‘:‘2341‘, ‘Beth‘:‘9102‘,‘Cecil‘:‘3258‘}
a.由键-值组成,上述例子中,名字是键,电话号码是值
b.键与值用冒号(:)隔开
c.每一对键-值使用逗号(,)隔开
d.整个字典由一对大括号括起来
e.空字典:{}
dict函数
>>>
items = [(‘name‘,‘Gumby‘),(‘age‘,42)]
>>>
d = dict(items)
>>>
d
{‘age‘:
42, ‘name‘: ‘Gumby‘}
>>>
>>>
d = dict(name = ‘Gumby‘, age = 42)
>>>
d
{‘age‘:
42, ‘name‘: ‘Gumby‘}
基本字典操作
len(d):返回字典中(键-值对)的元素数量
d[k] 返回关联到键k上的值
d[k] = v 将值v关联到键k上
del d[k] 删除键为k的项
k in d 检查d中是否含有键为k的项
键类型:字典的键不一定是整形,可以是任意的不可变类型
自动添加:当键不存在时,也可以赋值,字典会建立新的项
成员资格:k in d查找的是键,而不是值
>>>
people = {‘Beth‘:{‘phone‘:9102,‘addr‘:‘Bar street 42‘}}
>>>
people[‘Beth‘][‘addr‘]
‘Bar
street 42‘
字典的格式化字符串
>>> phonebook = {‘Beth‘:‘9102‘,‘Alice‘:‘2341‘,‘Cecil‘:3258}
>>> "Cecil‘s phone number is %(Cecil)s"
% phonebook
"Cecil‘s
phone number is 3258"
字典的方法
1)clear: 清除字典中的所有项
>>>
d = {}
>>>
d[‘name‘] = ‘Gumby‘
>>>
d[‘age‘] = 42
>>>
d
{‘age‘:
42, ‘name‘: ‘Gumby‘}
>>>
returned_value = d.clear()
>>>
d
{}
适用于下面的情况:y和x对应同一个字典,想要清空原始字典中所有元素,必须使用clear方法
2)copy:返回一个具有相同键-值对的新字典(浅复制,非复制)
>>>
x = {‘username‘:‘admin‘, ‘machines‘:[‘foo‘, ‘bar‘, ‘baz‘]}
>>>
y = x.copy()
>>>
y[‘username‘] = ‘mlh‘
>>>
y[‘machines‘].remove(‘bar‘)
>>>
y
{‘username‘:
‘mlh‘, ‘machines‘: [‘foo‘, ‘baz‘]}
>>>
x
{‘username‘:
‘admin‘, ‘machines‘: [‘foo‘, ‘baz‘]}
注:修改值,原字典不受影响;若原地修改值,原字典受影响。
使用深复制,可以避免上述问题。使用copy模块的deepcopy函数
>>>
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‘]}
3)fromkeys:使用给定的键建立新的字典,每个键都对应一个默认的值None
>>>
{}.fromkeys([‘None‘, ‘age‘])
{‘None‘:
None, ‘age‘: None}
4)get:访问字典项,一般来说,如果试图访问字典中不存在的项时会报错,但是get不会
>>>
d = {}
>>>
print d.get(‘name‘)
None
>>>
d.get(‘name‘, ‘N/A‘)
‘N/A‘
5)has_key(python 3.0中不存在此函数):检查字典中是否含有特定的键
>>>
d = {}
>>>
d.has_key(‘name‘)
False
6)items/iteritems
items:将字典中的项以列表形式返回,列表中的每一项都表示为键-值对的形式
>>>
d = {‘title‘:‘Python Web Site‘, ‘url‘:‘http://www.python.org‘, ‘spam‘:0}
>>>
d.items()
[(‘url‘,
‘http://www.python.org‘), (‘spam‘, 0),
(‘title‘, ‘Python Web Site‘)]
7)key/iterkays
key方法将字典中的键以列表形式返回,iterkeys则返回针对键的迭代器
8)pop:获得对应于给定键的值,然后将这个键-值对从字典中删除
>>>
d = {‘x‘:1, ‘y‘:2}
>>>
d.pop(‘x‘)
1
>>>
d
{‘y‘:
2}
9)popitem:弹出随机项
>>>
d = {‘title‘:‘Python Web Site‘, ‘url‘:‘http://www.python.org‘, ‘spam‘:0}
>>>
d.popitem()
(‘url‘,
‘http://www.python.org‘)
>>>
d
{‘spam‘:
0, ‘title‘: ‘Python Web Site‘}
10)setdefault:当键不存在的时候,setdefault返回默认值并且相应的更新字典
>>>
d = {}
>>>
d.setdefault(‘name‘, ‘N/A‘)
‘N/A‘
>>>
d[‘name‘] = ‘Gumby‘
>>>
d.setdefault(‘name‘, ‘N/A‘)
‘Gumby‘
>>>
d
{‘name‘:
‘Gumby‘}
11)update:利用一个字典更新另一个字典
>>>
d = {‘title‘:‘Python Web Site‘, ‘url‘:‘http://www.python.org‘, ‘changed‘:‘Apr
19 17:15:20 2017‘}
>>>
x = {‘title‘:‘Python Language Websites‘}
>>>
d.update(x)
>>>
d
{‘url‘:
‘http://www.python.org‘, ‘changed‘: ‘Apr 19
17:15:20 2017‘, ‘title‘: ‘Python Language Websites‘}
12)values/itervalues
values方法以列表的形式返回字典中的值
>>>
d = {}
>>>
d[1] = 1
>>>
d[2] = 2
>>>
d[3] = 3
>>>
d[4] = 1
>>>
d.values()
[1,
2, 3, 1]