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 示例如下: ...
随机推荐
- Vue CLI 3 如何自定义 js 的文件名
参考链接:https://blog.csdn.net/weixin_33979363/article/details/88742342
- shell中变量的测试与替换
在某些时刻我们经常需要判断某个变量是否存在,若变量存在则使用既有的设置,若变量不存在则给予一个常用的设置. (1) 变量未被设置或者内容为空,则替换为新的内容. new_var=${old_var-c ...
- nginx passwd (http://www.voidcn.com/article/p-suebfyqy-nx.html)
操作系统CentOS 7.2 nignx 1.10.1 首先我们用Nginx提供HTTP的Basic Auth功能,配置了需要输入的用户名和密码,才能访问网站. 我们使用htpasswd来生成密码信息 ...
- 【leetcode算法-简单】20. 有效的括号
[题目描述] 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字 ...
- js复制文本
第一种: 自己测试时 只适合于input 和textarea 但是针对于其他标签的复制就不能用了.代码如下: <!DOCTYPE html> <html> <head&g ...
- [OpenCV] 图像亮度和对比度调整
对比度调整的原理参考这篇博客 以下是代码实现: #include <iostream> #include "opencv2/core.hpp" #include &qu ...
- iostream重载__int128
Normal (Naive)写法,用 string(char* ) std::ostream& operator <<(std::ostream&out,const __i ...
- Dijstra_优先队列_前向星
Dijstra算法求最短路径 具体实现方式 设置源点,将源点从原集u{}中取出并放入新建集s{} 找出至源点最近的点q从原集取出放入新集s{} 由q点出发,更新所有由q点能到达的仍处于原集的点到源点的 ...
- Photon Server初识(六) --- 客户端与服务端消息传递
前一章客户端与服务端连接成功,现在需要前后端进行数据传递. 一.前端发送消息.在项目Scripts目录中新建脚本 TestSer.cs.并挂载到相机上 二.客户端发送数据给服务端.编辑客户端代码 Te ...
- S03_CH03_AXI_DMA_OV7725摄像头采集系统
S03_CH03_AXI_DMA_OV7725摄像头采集系统 3.1概述 本课程讲解如何搭建基于DMA的图形系统,方案原理如下. 摄像头采样图像数据后通过DMA送入到DDR,在PS部分产生DMA接收中 ...