查看python版本:
[root@localhost ~]# python -V Python 2.7.5
1.基本的字典操作
案例1:简单电话本实现
[root@localhost ~]# vim addresslist.py
# -*- coding: utf-8 -*-
#一个简单的数据库通讯录
#字典使用人名作为键。每个人使用另一个字典来表示,其键'phone'和‘addr’分别表示电话号码和地址
people = {
'Wang':{
'phone':'12345',
'addr':'BJ'
},
'Ni':{
'phone':'23456',
'addr':'NJ'
},
'Ma':{
'phone':'34567',
'addr':'DJ'
}
}
#针对电话号码和地址使用的描述性标签,会在打印输出的时候用到
labels = {
'phone':'phone number',
'addr':'address'
}
#查找电话号码还是地址
name = raw_input('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])
else:
print 'Sorry,I do not know'
运行结果:
[root@localhost ~]# python addresslist.py input name:Wang Phone number (p) or address (a) ?a Wang's address is BJ. [root@localhost ~]# python addresslist.py input name:pppp Phone number (p) or address (a) ?p Sorry,I do not know
使用get()方法访问(对比与上例中的区别,省略相同的代码)
key = request #请求既不是'a',也不是'p'
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])
#else:
# print 'Sorry,I do not know'
#
#使用get()提供默认值
person = people.get(name,{})
label = labels.get(key,key)
result = person.get(key,'not available')
print "%s's %s is %s." % (name,label,result)
示例输出:
[root@localhost ~]# python addresslist.py
input name:Wang
Phone number (p) or address (a) ?a
Wang's address is BJ.
[root@localhost ~]# python addresslist.py //什么都不输入,因为设置了默认值,所以程序不会报错 input name: Phone number (p) or address (a) ? 's is not available.
2.字典的格式化字符串
(1).在每个转换说明符中的%后面,可以加上键(用圆括号括起来),后面再跟上其他说明元素。
>>> phonebook = {'Wang':'1234','Ni':'2345','Ma':'3456'}
>>> "Wang's phone number is %(Wang)s." % phonebook
"Wang's phone number is 1234."
(2).除了增加字符串键外,转换说明符还可以像以前一样工作。当以这种方式使用字典的时候,只要所有给出的键都可以在字典中找到,就可以使用任意数量的转换说明符。这类字符串格式化在模板系统中非常有用。
>>> template='''<html>
... <head><title>%(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
<html>
<head><title>My Home Page</title></head>
<body>
<h1>My Home Page<h1>
<p>Welcome to my home page!</p>
</body>
3.update方法可以利用一个字典项去更新另外一个字典:
>>> d = {
... 'title':'Python Web Site',
... 'url':'http://www.python.org',
... 'changed':'2015-09-25'
... }
>>> x={'title':'Python'}
>>> d.update(x)
>>> d
{'url': 'http://www.python.org', 'changed': '2015-09-25', 'title': 'Python'}
>>> x
{'title': 'Python'}
提供的字典中的项会被添加到旧的字典中,若有相同的键,则会进行覆盖。
4.values方法会以列表的形式返回字典中的值
>>> d.values()
['http://www.python.org', '2015-09-25', 'Python']
5.keys方法会以列表的形式放回字典中的键
>>> d.keys()
['url', 'changed', 'title']
>>>
6.items方法将字典中的所有项以列表形式返回
>>> d.items()
[('url', 'http://www.python.org'), ('changed', '2015-09-25'), ('title', 'Python')]
参考资料:
Python基础教程(第二版.修订版)