查看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字典的入门案例的更多相关文章

  1. python无线网络安全入门案例

    原文链接:http://www.devx.com/security/Article/34741 翻译:诸神的黄昏 整理校对:玄魂 --- 随着⽆线⽹络在家庭和商业中的普及,新的安全挑战是⽆法避免的.保 ...

  2. Python爬虫Scrapy(二)_入门案例

    本章将从案例开始介绍python scrapy框架,更多内容请参考:python学习指南 入门案例 学习目标 创建一个Scrapy项目 定义提取的结构化数据(Item) 编写爬取网站的Spider并提 ...

  3. Python编程从入门到实践笔记——字典

    Python编程从入门到实践笔记——字典 #coding=utf-8 #字典--放在{}中的键值对:跟json很像 #键和值之间用:分隔:键值对之间用,分隔 alien_0 = {'color':'g ...

  4. Python入门(案例)

    Python入门(案例) #一.上课案例: #输出hello wordprint('hello word') #python注释有两种#1.单行注释#这是单行注释#2.多行注释'''这是多行注释''' ...

  5. python字典推导式 - python基础入门(17)

    在昨天的文章中,我们介绍了关于python列表推导式 的使用,字典推导式使用方法其实也类似,也是通过循环和条件判断表达式配合使用,不同的是字典推导式返回值是一个字典,所以整个表达式需要写在{}内部. ...

  6. python 字典dict - python基础入门(15)

    前面的课程讲解了字符串str/列表list/元组tuple,还有最后一种比较重要的数据类型也需要介绍介绍,那就是python字典,俗称:dict. python中的字典可与字符串/列表/元组不同,因为 ...

  7. Python pandas快速入门

    Python pandas快速入门2017年03月14日 17:17:52 青盏 阅读数:14292 标签: python numpy 数据分析 更多 个人分类: machine learning 来 ...

  8. 零起点PYTHON机器学习快速入门 PDF |网盘链接下载|

      点击此处进入下载地址 提取码:2wg3 资料简介: 本书采用独创的黑箱模式,MBA案例教学机制,结合一线实战案例,介绍Sklearn人工智能模块库和常用的机器学习算法.书中配备大量图表说明,没有枯 ...

  9. Python简单爬虫入门三

    我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...

随机推荐

  1. NGINX 缓存使用指南

    NGINX 缓存使用指南 [proxy_cache] Nginx 一个web缓存坐落于客户端和“原始服务器(origin server)”中间,它保留了所有可见内容的拷贝.如果一个客户端请求的内容在缓 ...

  2. 字符串截取 及 substr 和 substring 的区别

    1..字符串截取 str.substr(0, 1) // 获取字符串第一个字符 str.substr(-1) // 获取字符串最后一个字符 str.charAt(str.length - 1) // ...

  3. STL学习笔记(已序区间算法)

    针对已序区间执行的算法,执行前提是源区间必须在某个排序准则下已序. 搜寻元素(Searching) 1.检查某个元素是否存在 bool binary_search(ForwardIterator be ...

  4. php url路由伪静态

    RewriteEngine on RewriteBase /RewriteRule ^([a-zA-Z]{1,})/([a-zA-Z]{1,})$ webim2/operator/users.php? ...

  5. J2EE之字符编码输出

    1. public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...

  6. 40: Redraiment的走法(不连续最长子字符串)

    题目描述 :   Redraiment是走梅花桩的高手.Redraiment总是起点不限,从前到后,往高的桩子走,但走的步数最多,不知道为什么?你能替Redraiment研究他最多走的步数吗? 样例输 ...

  7. CDN与缓存的归纳理解

    缓存是什么 缓存是一个到处都存在的用空间换时间的例子.通过使用多余的空间,我们能够获取更快的速度. 我们通常意义上说的缓存主要包含两部分.第一个是用户浏览器端的缓存,第二个是服务器端为了提高访问速度而 ...

  8. Windows进程间通信--共享内存映射文件(FileMapping)--VS2012下发送和接收

    之前以为两个互不相关的程序a.exe b.exe通信就只能通过网络,人家说可以通过发消息,我还深以为不然,对此,我表示万分惭愧. 之前课本上说的进程间通信,有共享内存.管道等之类的,但没有自己操刀写过 ...

  9. CAN协议学习(一)协议介绍

    一.简介 CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信协议. 在当前的汽车产业中,出于对安全性.舒适性.方便性.低公害.低成 ...

  10. Unity3D引擎之渲染技术系列一

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者.国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...