查看python版本:
[[email protected] ~]# python -V Python 2.7.5
1.基本的字典操作
案例1:简单电话本实现
[[email protected] ~]# 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‘
运行结果:
[[email protected] ~]# python addresslist.py input name:Wang Phone number (p) or address (a) ?a Wang‘s address is BJ. [[email protected] ~]# 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)
示例输出:
[[email protected] ~]# python addresslist.py input name:Wang Phone number (p) or address (a) ?a Wang‘s address is BJ.
[[email protected] ~]# 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基础教程(第二版.修订版)
时间: 2024-11-03 01:39:16