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怎去抓取网页信息以及获取相应的图片标题等信 ...
随机推荐
- Navicat Premium 连接 Oracle 数据库
Navicat Premium 是一个可多重连接的数据库管理工具,它可让你以单一程序同時连接到 MySQL.SQLite.Oracle 及 PostgreSQL 数据库,让管理不同类型的数据库更加方便 ...
- win7不休眠方式设置
方式1:命令行下以管理员方式执行:powercfg -h off 方式2:右键个性化-->屏幕保护程序-->更改电源设置--->更改计算机睡眠时间--->是计算机进入睡眠状态选 ...
- git统计代码行数
查看个人指定时期内代码行数,注意将 --author="user.name" 替换成自己的用户名 git log --since="2018-07-16" -- ...
- 介绍C#结构体与类区别
1. 结构体与类定义方式 结构体定义使用struct类定义使用class 结构体: struct testDemo{ int num; void action(){ } } 类: class test ...
- Android基础之使用Fragment控制切换多个页面
Android官方已经提供了Fragment的各种使用的Demo例子,在我们SDK下面的API Demo里面就包含了Fragment的各种使用例子,需要看Demo的朋友,直接看API Demo那个程序 ...
- springboot学习(一) spring-boot是什么
1.简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程. 2.主要优点 ① 使配置变得简单 ② 使编码变得简单 ③ 使 ...
- Ansible 安装jdk
1. 在hosts文件添一个group,里面是你需要安装jdk的ip,如: [newhosts]192.168.2.155 ansible_ssh_user=hadoop ansible_ssh_pa ...
- maven的一些基础命令
1.显示当前构建的实际pom,包括活动的Profile mvn help:effective-pom 2.打印出项目的世界settings,包含从全局的settings和用户级别settings继承的 ...
- Apache安全和强化的十三个技巧
Apache是一个很受欢迎的web服务器软件,其安全性对于网站的安全运营可谓生死攸关.下面介绍一些可帮助管理员在Linux上配置Apache确保其安全的方法和技巧. 本文假设你知道这些基本知识: 文档 ...
- 解决myeclipse10.x的Servers产生的at com.genuitec.eclipse.ast.deploy.core.Deployment.<init>(Unknown Source)错
错误: java.lang.NullPointerException at com.genuitec.eclipse.ast.deploy.core.Deployment.<init>(U ...