字典的创建与使用:
phonebook = {'Alice':'2341','Beth':'9102','Cecil':'3258'}
一个简单的字典事例:
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 = raw_input('Name:') request = raw_input('Phone number (p) or address(a)? ') if request == 'p' : key = 'phone' if request == 'a' : key = 'addr' if name in people : print "%s's %s is %s." % \ (name, labels[key],people[name][key])
运行结果:
Name:Beth
Phone number (p) or address(a)?p
Beth's phone number is 9102.
Python基础教程第二版(4.2.3)
字典格式化字符串示例:
>>> template = '''<html>'''
>>> template = '''<html>
<head><title>s</title></head>
<body>
<h1>%(title)s</h1>
<p>%(text)s</p>
</body>'''
>>> data = {'title': 'My Home Page','text':'Welcome to my home page'}
>>> print template % data
字典方法:就像其他内建类型一样,字典也有方法。这些方法非常有用,但是可能不会像使用列表或者字符串方法那样频繁。
1、Clear
清除字典中所有的项。这是个原地操作,所以无返回值。
>>> d = {}
>>> d['name'] = 'Gumby'
>>> d['age'] = 42
>>> d
{'age': 42, 'name': 'Gumby'}
>>> returned_value = d.clear()
>>> d
{}
>>> print returned_value
None
情况一:
>>> x = {}
>>> y = x
>>> x['Key'] = 'Value'
>>> y
{'Key': 'Value'}
>>> x = {}
>>> y
{'Key': 'Value'}
情况二:
>>> x = {}
>>> y = x
>>> x['Key'] = 'Value'
>>> y
{'Key': 'Value'}
>>> x.clear()
>>> y
{}
两种情况中,x和y最初对应同一个字典。情况一中,我们将x关联一个新的空字典来“清空”它,这对y一点影响也没有,它还关联到原先的字典.但如果真的想清空原始字典中的所有元素,必须使用clear方法.正如在情况二中所看到的,y随后也被清空了。
2、Copy
Copy方法返回一个具有相同键-值对的薪资点(这个方法实现的是浅复制(shalow 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']}
可以看到,当在副本中替换值的时候,原始字典不受影响,但是,如果修改了某个值(原地修改而不是替换),原始的字典也会改变,因为同样的值也存储在原字典中(就像上面例子中的“machines”列表一样)
避免这个问题的一种方法就是使用深复制(deep copy),复制其包含所有的值。可以使用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
Fromkeys方法使用给定的键建立新的字典,每个键默认对应的值为None。
>>> {}.fromkeys(['name','age'])
{'age': None, 'name': None}
刚才的例子首先构造了一个空字典,然后调用它的fromkeys方法,建立另一个字典.也可以用dict
映射:映射可以使用任何不可变对象标识元素.最常用的类型是字符串和元组.python唯一内奸的映射类型是字典.
利用字典格式化字符串:可以通过在格式化说明符中包含包括名称(键)来对字典应用字符串格式化操作.挡在字符格式化中使用元组时,还需要对元组中每一个元素都设定“格式化说明符”。在使用字典时,当所用的说明符可以在比字典中用到的项少。