Python 字典 (4) 持续更新
字典一种用名字来引用值的数据结构,这种数据结构称为 映射(mapping) 。字典中的键可以是数字、字符串和元组。
字典 创建和使用
创建
phonebook = {'Aaron':13300000000,'Beth':13311111111,'Alice':13322222222}
键和值用 : 隔开
项之间的用 , 隔开
整个字典 大括号扩起来 { }
Dict函数 创建 和 访问
>>> phonebook = dict(Aaron=13300000000,Beth=13311111111)
>>> phonebook['Aaron']
13300000000L
字典操作
字典大部分函数和序列类似:
- len(dict) 返回dict中 项 数量
- d[k] 返回 字典 K 键 值
- d[k] = v 修改值
- del d[k] 删除项
- k in d 检查是否包含 k 键 项
键的类型必须是不可变的类型,如浮点型、字符串和元组。
>>> x = []
>>> x[42] = 'Foobar'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> x = [None] * 43
>>> x[42] = 'Foobar'
>>> x[42]
'Foobar'
>>> x = {}
>>> x[42] = 'Foobar'
>>> x[42]
'Foobar'
代码示例 电话本例子
people = {
'Alice':{
'phone':'',
'addr':'Address 1'
},
'Aaron':{
'phone':'',
'addr':'Address 2'
}
}
name = raw_input('Name:')
if name in people:
info = people[name];
print "%s's %s %s" % (name,info['phone'],info['addr']);
字典 格式化字符串
>>> phonebook = {'Aaron':456453,'Cecil':32588}
>>> 'Aaron\'s phone number is %(Aaron)s' % phonebook
"Aaron's phone number is 456453"
只要要格式化的键,能在字典里找到,就能转换。一般在html模板里,非常有用。
同样也可以在 string.Template 使用
>>> phonebook = {'Aaron':456453,'Cecil':32588}
>>> from string import Template
>>> tempLate = Template('Aaron\'s phone number is %(Aaron)s')
>>> tempLate.substitute(phonebook)
"Aaron's phone number is %(Aaron)s"
字典方法
示例一 clear
clear 清除字典所有项
>>> phonebook = {'Aaron':456453,'Cecil':32588}
>>> phonebook
{'Aaron': 456453, 'Cecil': 32588}
>>> phonebook.clear()
>>> phonebook
{}
示例二 copy
copy 返回一个字典(浅复制)的一个新字典
浅复制示例
>>> a = {'name':'name1','info':[1,2,3,4,5]}
>>> b = a.copy()
>>> a,b
({'info': [1, 2, 3, 4, 5], 'name': 'name1'}, {'info': [1, 2, 3, 4, 5], 'name': '
name1'})
>>> b['name'] = 'name2'
>>> a,b
({'info': [1, 2, 3, 4, 5], 'name': 'name1'}, {'info': [1, 2, 3, 4, 5], 'name': '
name2'})
>>> a['info'].remove(2)
>>> a,b
({'info': [1, 3, 4, 5], 'name': 'name1'}, {'info': [1, 3, 4, 5], 'name': 'name2'
})
深复制示例
需要用到 copy模块的deepcopy函数
>>> from copy import deepcopy
>>> b = deepcopy(a)
>>> a['info'].remove(3)
>>> a,b
({'info': [1, 4, 5], 'name': 'name1'}, {'info': [1, 3, 4, 5], 'name': 'name1'})
示例三 fromkeys
fromkeys 设置字典的键,修改指定值
>>> a = {}
>>> a.fromkeys(['name','info'],'string')
{'info': 'string', 'name': 'string'}
如果不设置默认值,将是 None
>>> a.fromkeys(['name','info'])
{'info': None, 'name': None}
如果该键已经存在字典中,仍然会修改字典。
示例四 get
获得字典键对应的值,当访问不存在的键,没有任何异常,会得到None,也可以定义默认的值。
>>> a = {'name':'Aaron'}
>>> a['name']
'Aaron'
>>> a.get('name')
'Aaron'
>>> a['age']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'age'
>>> a.get('age')
>>> print a.get('age')
None
>>> print a.get('age','N/A')
N/A
使用字典的示例
people = {
'Alice':{
'phone':'',
'addr':'Address 1'
},
'Aaron':{
'phone':'',
'addr':'Address 2'
}
}
name = raw_input('Name:')
request = raw_input('Request:')
info = people.get(name)
if info:
requestInfo = info.get(request,"No Info")
else:
requestInfo = "No Info"
print 'name:%s %s:%s' % (name,request,requestInfo)
运行结果
C:\Users\ChengXu1\Desktop>python aa.py
Name:a
Request:a
name:a a:No Info C:\Users\ChengXu1\Desktop>python aa.py
Name:aa
Request:s
name:aa s:No Info C:\Users\ChengXu1\Desktop>python aa.py
Name:Aaron
Request:phone
name:Aaron phone:888546 C:\Users\ChengXu1\Desktop>python aa.py
Name:Aaron
Request:23
name:Aaron 23:No Info
get方法可以在用户输入我们未准备的情况,也能做出合理反应。
示例五 has_key
has_key 在Python3.0中已不存在,作用和 k in dict 一样,检查字典中是否含有特定的键。
示例六 items 和 iteritems
items 以列表形式返回
iteritems 返回一个迭代器对象
people = {
'Alice':{
'phone':'',
'addr':'Address 1'
},
'Aaron':{
'phone':'',
'addr':'Address 2'
}
}
print people.items()
iters = people.iteritems()
print iters
print list(iters)
运行结果
C:\Users\ChengXu1\Desktop>python aa.py
[('Aaron', {'phone': '', 'addr': 'Address 2'}), ('Alice', {'phone': '
', 'addr': 'Address 1'})]
<dictionary-itemiterator object at 0x00000000026E2C78>
[('Aaron', {'phone': '', 'addr': 'Address 2'}), ('Alice', {'phone': '
', 'addr': 'Address 1'})]
示例七 keys 和 iterkeys
keys 返回字典中的键以列表形式返回
iterkeys 返回针对键的迭代器
示例八 pop
pop 返回字典给定的键的值,并从字典中删除
>>> a = {'n':1111}
>>> a
{'n': 1111}
>>> a.pop('n')
1111
>>> a
{}
示例九 popitem
popitem方法 弹出一个随机项,并从字典删除该项,返回的该项是 以 键,值 元组形式
>>> a = {'n':1,'b':2}
>>> a.popitem()
('b', 2)
示例十 setdefault
setdefault 返回字典对应键值,如果不存在,返回默认值
>>> a = {'n':1111}
>>> print a.setdefault('n')
1111
>>> print a.setdefault('b','AA')
AA
>>> print a
{'b': 'AA', 'n': 1111}
示例十一 update
update 一个字典项更新另外一个字典
>>> a = {'b': 'AA', 'n': 1111}
>>> b = {'b':'cc'}
>>> a.update(b)
>>> a
{'b': 'cc', 'n': 1111}
>>> b = {'c':11}
>>> a.update(b)
>>> a
{'c': 11, 'b': 'cc', 'n': 1111}
>>>
提供的字典中的项会被添加到旧的字典中,若有相同的则会覆盖。
示例十二 values 和 itervalues
values 以列表的形式放回字典中的值
iterkeyvalues 返回字典中值的迭代器
Python 字典 (4) 持续更新的更多相关文章
- LeetCode python实现题解(持续更新)
目录 LeetCode Python实现算法简介 0001 两数之和 0002 两数相加 0003 无重复字符的最长子串 0004 寻找两个有序数组的中位数 0005 最长回文子串 0006 Z字型变 ...
- LeetCode 题目的 Python 实现(持续更新中)
Python-LeetCode 是一个使用 Python 语言解决 LeetCode 问题的代码库,库有以下几个方面需要注意: 所有题目都是 AC 的: 按照题目顺序,每 50 个放在一个目录下,方便 ...
- python笔记(持续更新)
1.编译python遇到下面的编码问题: SyntaxError: Non-ASCII character '\xe9' in file E:\projects\learn.py on lin ...
- python tips(持续更新中)
python tips 可变对象与不可变对象 在python中,可变对象有数值类型(int,float),字符串(str),元组(tuple),可变对象有列表(list),字典(dict),集合(se ...
- python内置模块笔记(持续更新)
常用函数name = '{wh}my \t name is {name},age is {age}.' print(name.capitalize()) # 字符串的开头字母大写 print(name ...
- Python 字符串 (3) 持续更新
字符串操作 虽然字符串也是一种序列,但是它和元组一样,不可变的.当你想对它修改时,会引发异常.如 >>> strings = "Let's go">> ...
- python tips(持续更新)
1. 引用上一层目录 import syssys.path.append('..')import xx 2. python json JSON是一种轻量级的数据交换格式.可以解决数据库中文存储问题,对 ...
- Python相关工具清单[持续更新]
SublimeJEDI : awesome Python autocompletion with SublimeText. Awesome Python : A curated list of awe ...
- Python使用中错误(持续更新.....)
1.在使用requests发送请求,响应数据转成json提示,没有可解码的json 解决办法: 这是由于,发送请求的数据,存在错误,响应出错比如404 400,所以找不到可以解码的json 示例如下: ...
随机推荐
- .Net WebApi接口之Swagger UI 隐藏指定接口类或方法
swagger的一个最大的优点是能实时同步api与文档,但有些时候我们不想全部公开接口,而要隐藏或屏蔽一些接口类或方法,swagger也是支持的,只需要设置一下DocumentFilter方法. 第一 ...
- mongodb的安装部署-备份
1.安装部署 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.10.tgz tar -zxf mongodb-linux- ...
- python 创建目录文件夹
主要涉及到三个函数 1.os.path.exists(path) 判断一个目录是否存在 2.os.makedirs(path) 多层创建目录 3.os.mkdir(path) 创建目录 DEMO 直接 ...
- Python初始
一,Python介绍 1.Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间, ...
- odoo12安装指南
声明:本指南默认已安装好Python3和pycharm及postgresql,odoo12的源码包 一. 1.在pycharm创建一个新的项目 建议创建在虚拟环境中 2.在pycharm的控制台下检验 ...
- poj2947(高斯消元法解同余方程组)
题目链接:https://vjudge.net/problem/POJ-2065 题意:题目看着较复杂,实际上就是给了n个同余方程,解n个未知数. 思路:套高斯消元法的模板即可. AC代码: #inc ...
- java xml解析方式(DOM、SAX、JDOM、DOM4J)
XML值可扩展标记语言,是用来传输和存储数据的. XMl的特定: XMl文档必须包含根元素.该元素是所有其他元素的父元素.XML文档中的元素形成了一颗文档树,树中的每个元素都可存在子元素. 所有XML ...
- HTTP用户认证、追加协议以及相关技术简单学习
1. 用户身份认证 BASIC认证(基本认证): DIGEST(摘要认证): SSL客户端认证: FormBase认证(表单认证)常用: session和cookie 2. 基于HTTP的追加协议 A ...
- linux安装java jdk
一.检查是否已经安装java jdk. 检查是否有自带的openJdk, 若有将其卸载删除.详情第四步 二.jdk下载安装. 1.创建文件夹 mkdir /usr/local/java #自选目录,一 ...
- thinkphp5.1中使用Bootstrap4分页样式修改
1.找到thinkphp下的Boorstrap的源码 \thinkphp\library\think\paginator\driver\Bootstrap.php 2丶直接修改源码 <?php ...