Python字典的入门案例
查看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字典的入门案例的更多相关文章
- python无线网络安全入门案例
原文链接:http://www.devx.com/security/Article/34741 翻译:诸神的黄昏 整理校对:玄魂 --- 随着⽆线⽹络在家庭和商业中的普及,新的安全挑战是⽆法避免的.保 ...
- Python爬虫Scrapy(二)_入门案例
本章将从案例开始介绍python scrapy框架,更多内容请参考:python学习指南 入门案例 学习目标 创建一个Scrapy项目 定义提取的结构化数据(Item) 编写爬取网站的Spider并提 ...
- Python编程从入门到实践笔记——字典
Python编程从入门到实践笔记——字典 #coding=utf-8 #字典--放在{}中的键值对:跟json很像 #键和值之间用:分隔:键值对之间用,分隔 alien_0 = {'color':'g ...
- Python入门(案例)
Python入门(案例) #一.上课案例: #输出hello wordprint('hello word') #python注释有两种#1.单行注释#这是单行注释#2.多行注释'''这是多行注释''' ...
- python字典推导式 - python基础入门(17)
在昨天的文章中,我们介绍了关于python列表推导式 的使用,字典推导式使用方法其实也类似,也是通过循环和条件判断表达式配合使用,不同的是字典推导式返回值是一个字典,所以整个表达式需要写在{}内部. ...
- python 字典dict - python基础入门(15)
前面的课程讲解了字符串str/列表list/元组tuple,还有最后一种比较重要的数据类型也需要介绍介绍,那就是python字典,俗称:dict. python中的字典可与字符串/列表/元组不同,因为 ...
- Python pandas快速入门
Python pandas快速入门2017年03月14日 17:17:52 青盏 阅读数:14292 标签: python numpy 数据分析 更多 个人分类: machine learning 来 ...
- 零起点PYTHON机器学习快速入门 PDF |网盘链接下载|
点击此处进入下载地址 提取码:2wg3 资料简介: 本书采用独创的黑箱模式,MBA案例教学机制,结合一线实战案例,介绍Sklearn人工智能模块库和常用的机器学习算法.书中配备大量图表说明,没有枯 ...
- Python简单爬虫入门三
我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...
随机推荐
- Laravel之Elixir
一.Elixir安装和设置 1.安装node.js 2.安装Gulp 作为全局NPM 包 npm install --global gulp 3.最后,在新安装的Laravel 根目录下,你会发现有一 ...
- scrapy 安装详解
一. Scrapy简介 Scrapy is a fast high-level screen scraping and web crawling framework, used to crawl we ...
- django model filter 条件过滤,及多表连接查询、反向查询,某字段的distinct
1.多表连接查询:当我知道这点的时候顿时觉得django太NX了. class A(models.Model): name = models.CharField(u'名称') class B ...
- react-native-router-flux 页面跳转与传值
1.正向跳转假设情景:从Home页跳转到Profile页面,Profile场景的key值为profile 不带参数: Actions.profile 带参数: Actions.profile({'ke ...
- listItem选中状态高亮
两种方法1.在adapter中添加方法changeSelected()int mSelect = 0; //mSelect为选中项public void changeSelected(int posi ...
- centos自动安装镜像脚本
#!/bin/bash ######################################################################################## ...
- 解决H5在微信浏览器或QQ浏览器修改title的问题
传送门:http://blog.csdn.net/code_for_free/article/details/51195468 如果是Android,使用 document.title = ‘1231 ...
- org.springframework.beans.factory.UnsatisfiedDependencyException
© 版权声明:本文为博主原创文章,转载请注明出处 1.问题描述: 搭建SSH框架,启动时报错如下: 严重: Context initialization failed org.springframew ...
- Junit内部解密之三: 单元测试用例运行的全过程
转自:http://blog.sina.com.cn/s/blog_6cf812be0100x8sb.html 我们以一个非常简单的TestCalculator类为例,只有一个测试方法: Public ...
- Oracle Data Provider for .NET的使用(二)-驱动更换与注意事项
上篇说过了ODP的安装与配置 ,但是个人比较喜欢托管类型的,毕竟非托管类型的,因为考虑到会有用户或者是服务器或者是开发人员有32位的机器,就要强制编译平台平台为32位,只因为这个驱动,有点让人不愉快了 ...