查看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. cisco 为每个单独的人员设置不同的用户名和密码

    cisco 为每个单独的人员设置不同的用户名和密码 2010-12-15 17:00:16 分类: 系统运维 Router1#configure terminalEnter configuration ...

  2. JavsScript中DOM的基本操作

    节点及其类型 元素节点 属性节点: 元素的属性, 可以直接通过属性的方式来操作. 文本节点: 是元素节点的子节点, 其内容为文本. 在 html 文档的什么位置编写 js 代码 直接在 html 页面 ...

  3. 使用ALAssetsLibrary读取所有照片

    一. ALAssetsLibrary 介绍 ALAssetsLibrary 提供了访问iOS设备下”照片”应用下所有照片和视频的接口: 从 ALAssetsLibrary 中可读取所有的相册数据,即  ...

  4. LBS 附近的人

    1 http://www.infoq.com/cn/articles/depth-study-of-Symfony2 2 http://lbsyun.baidu.com/

  5. js中删除数组元素的几种方法

    1:js中的splice方法 splice(index,len,[item])    注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 inde ...

  6. EasyUI datagrid border处理,加边框,去边框,都能够

    以下是EasyUI 官网上处理datagrid border的demo: 主要是这句: $('#dg').datagrid('getPanel').removeClass('lines-both li ...

  7. css 控制文本显示两行 超过省略号显示

    display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; word-break: break-all; ov ...

  8. mapreduce 查找共同好友

    A:B,C,D,F,E,O B:A,C,E,K C:F,A,D,I D:A,E,F,L E:B,C,D,M,L F:A,B,C,D,E,O,M G:A,C,D,E,F H:A,C,D,E,O I:A, ...

  9. HDFS源码分析数据块复制监控线程ReplicationMonitor(二)

    HDFS源码分析数据块复制监控线程ReplicationMonitor(二)

  10. 【SQLServer2008】之如何导入mdf,ldf文件、导入.mdf文件报错解决问题以及如何获得Authenticated Users 权限

    一.如何导入mdf,ldf文件: 链接:http://jingyan.baidu.com/article/09ea3ede21258cc0afde3943.html 二.导入.mdf文件报错解决问题 ...