码迷,mamicode.com
首页 > 编程语言 > 详细

Python字典的入门案例

时间:2015-09-25 17:51:48      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

查看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基础教程(第二版.修订版)

Python字典的入门案例

标签:

原文地址:http://www.cnblogs.com/XYJK1002/p/4838663.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!