python之字典 2014-4-5
#字典:当索引不好用时
1.字典 类似于php的关联数组 列表类似于索引数组
2.创建字典
phonebook={'alice':'2100','tom':'1900'}
键值之间用: 项之间用,
空字典{}
字典函数
dict 通过映射将键值序列对建立字典
>>> item=[('name','Gumby'),('age',42)]
>>> d=dict(item)
>>> d
{'age': 42, 'name': 'Gumby'}
>>> d['name']
'Gumby'
dict也可以通过关键字参数来创建字典
>>> d=dict(name='Gumby',age=42)
>>> d
{'age': 42, 'name': 'Gumby'}
dict如果不带参数 则返回空字典
基本字典操作
len(d)返回d中项(键-值对)的数量
d[k]返回关联到键K上的值
d[k]=v将值关联到键k上
del d[k]删除键为k的项
k in d检查d中是否含有键为k的项
字典和列表的特性
键类型:字典的键不一定为整型数据
自动添加:字典中不存在的项 也可以直接赋值
成员资格:k in d查找的是键而不是值 查成员资格字典比列表更加高效
字典的格式化字符串
>>> phonebook={'alice':'2100','tom':'1900'}
>>> phonebook
{'alice': '2100', 'tom': '1900'}
>>> "alice's phone is %(alice)s."%phonebook
"alice's phone is 2100."
可以根据键提取任意一个值 模板里面用的特别多
3.字典方法
(1)clear 清除字典中所有的项
(2)copy 返回一个具有相同键值对的新字典
浅复制 键本身是相同的 不是副本
>>> x={'name':'admin','machine':['foo','bar','baz']}
>>> y=x.copy()
>>> y['name']='ml'
>>> y['machine'].remove('bar')
>>> y
{'machine': ['foo', 'baz'], 'name': 'ml'}
>>> x
{'machine': ['foo', 'baz'], 'name': 'admin'}
#如果修改的话 原字典会保留原来的值 但是如果删除某个项 原字典也会删除
如果想避免浅复制带来的后果 那就最好使用深复制(deep copy) 复制其包含所有的值
>>> from copy import deepcopy
>>> d={}
>>> d['names']=['after','before']
>>> c=d.copy()
>>> dc=deepcopy(d)
>>> d['names'].append('cleari')
>>> c
{'names': ['after', 'before', 'cleari']}
>>> dc
{'names': ['after', 'before']}
(3)fromkeys方法使用给定的键建立新的字典 每个键默认对应的值为None
>>> {}.fromkeys(['name','age'])
{'age': None, 'name': None}
也可以这样
>>> dict.fromkeys(['name','key'])
{'name': None, 'key': None}
如果不想使用None作为默认值 也可以自己指定
>>> dict.fromkeys(['name','age'],'(unknown)')
{'age': '(unknown)', 'name': '(unknown)'}
(4)get更宽松的访问字典项的方法 访问不存在的项不会出错 返回None
>>> d={}
>>> d['name']
Traceback (most recent call last):
File "<pyshell#43>", line 1, in <module>
d['name']
KeyError: 'name'
>>> d.get('name')
>>> print d.get('name')
None
如果为None 可以指定默认值为其他值
>>> print d.get('name','mo')
mo
如果键存在 就像普通的字典查询一样
>>> d['name']='eric'
>>> d.get('name')
'eric'
(5)has_key 检查字典中是否含有给出的键
相当于k in d
d.has_key('name')
(6)items和iteritems
item方法将所有的字典以列表的方式返回
每一项都来自于键值 项在返回时没有特殊的顺序
>>> d={'name':'eang','age':'19'}
>>> d.items()
[('age', '19'), ('name', 'eang')]
iteritems方法作用大致相同 但是会返回一个迭代器对象而不是列表
>>> it=d.iteritems()
>>> it
<dictionary-itemiterator object at 0x02B213F0>
>>> list(it)
[('age', '19'), ('name', 'eang')]
(7)keys和iterkeys
keys方法将字典中的键以列表形式返回 而iterkeys则返回针对键的迭代器
(8)pop方法用来获得对应于给定键的值 然后将这个键值对从字典中移除
>>> d={'x':1,'y':2}
>>> d.pop('x')
1
>>> d
{'y': 2}
(9)popitem
类似于list.pop list.pop会弹出列表的最后一个元素 popitem弹出随机项
>>> d={'x':'1','y':'2'}
>>> d
{'y': '2', 'x': '1'}
>>> d.popitem()
('y', '2')
>>> d.popitem()
('x', '1')
>>> d.popitem()
(10)setdefault
setdefault方法在某种程度上类似于get方法,可获得与给定键相关联的值
setdefault 还能在字典中不含有给定键的情况下设定相应的键值
>>> d={}
>>> d.setdefault('name','n/a')
'n/a'
>>> d
{'name': 'n/a'}
>>> d['name']='tom'
>>> d.setdefault('name','n/a')
'tom'
>>> d
{'name': 'tom'}
>>> d={}
>>> print d.setdefault('name')
None
>>> d
{'name': None}
(11)update
update方法可以利用一个字典项更新另外一个字典
>>> d={'name':'tom','age':'33'}
>>> x={'height':'170'}
>>> d.update(x)
>>> d
{'age': '33', 'name': 'tom', 'height': '170'}
(12)values 和itervalues
values方法以列表的形式返回字典中的值(itervalues返回值的迭代器)与返回键的列表不同的是 返回值得列表可以包含重复的元素
>>> d={}
>>> d[1]=1
>>> d[2]=2
>>> d[3]=3
>>> d.values()
[1, 2, 3]
python之字典 2014-4-5的更多相关文章
- Python中字典和集合
Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...
- Python的字典
1. Python的字典 1.1. 字典的定义 在Python中,字典是一种key-value的数据类型,也是唯一的映射类型:字典还是另一种可变容器类型,且可存储任意类型对象,其中也可包括其他容器 ...
- Python的字典和JSON
Python的字典和JSON在表现形式上非常相似 #这是Python中的一个字典 dic = { 'str': 'this is a string', 'list': [1, 2, 'a', 'b'] ...
- python基础--字典
Python基础--字典 字典的常用函数: dict.clear( )--->无任何返回值 说明: 清除字典内的所有的元素 语法: In [5]: dict.clear? Type: metho ...
- Python dictionary 字典 常用法
Python dictionary 字典 常用法 d = {} d.has_key(key_in) # if has the key of key_in d.keys() ...
- python有序字典OrderedDict()
转python创建有序字典OrderedDict # -*- coding:utf-8 -*- """ python有序字典 需导入模块collections " ...
- python:字典嵌套列表
Python的字典{ }以键值对的形式保存数据,可以以键来访问字典中保存的值而不能用下标访问.字典中几乎可以包含任意的变量,字典,数列,元组.数列也一样. python的列表[ ]与字典不同,列表通过 ...
- Python的字典类型
Python的字典类型为dict,用{}来表示,字典存放键值对数据,每个键值对用:号分隔,每个键值对之间用,号分隔,其基本格式如下: d = {key1 : value1, key2 : value2 ...
- python基础—字典
阅读文本需要3分钟,不建议跳读 节目清单 字典是python中最重要的数据类型,字典由“键-值”对组成的集合,字典中的“值”通过“键”来引用.这里将介绍字典的定义.访问.排序等功能. 字典的创建 字典 ...
- 深入Python(1): 字典排序 关于sort()、reversed()、sorted()
http://www.cnblogs.com/BeginMan/p/3193081.html 一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠 ...
随机推荐
- Monkey Banana Problem LightOJ - 1004
Monkey Banana Problem LightOJ - 1004 错误记录: 1.数组开小2.每组数据数组没有清空 #include<cstdio> #include<cst ...
- matlab实现算术编解码 分类: 图像处理 2014-06-01 23:01 357人阅读 评论(0) 收藏
利用Matlab实现算术编解码过程,程序如下: clc,clear all; symbol=['abc']; pr=[0.4 0.4 0.2]; %各字符出现的概率 temp=[0.0 0.4 0.8 ...
- Java-超市购物小票案例-详细介绍
1.1 超市购物购物小票需求分析 用户循环进行三个操作: 1.输入购买数量,代表为所购买货物的数量赋值,从而计算每项商品金额 2.打印小票,将已有数据打印 3.退出系统(因为该程序为循环操作,无法终 ...
- AJPFX总结FileWriter类的write方法
FileWriter从类OutputStreamWriter继承的 1.public void write(int c) throws IOException写入单个字符. ...
- Java 线程实例 刷碗烧水和倒计时
线程——烧水刷碗和倒计时实例 (一)烧水刷碗 刷碗的同时烧水:下面是碗的程序: 下面是烧水的程序:在水的实现类中,调用了Thread线程,让烧水刷碗同时进行. 注意:刷碗2s一次,烧水10s (二)1 ...
- 短视频SDK在广电系统的解决方案
锐动视频编辑SDK集手机视频拍摄和视频剪辑主要功能于一体,同时包含手机端视频配音配乐,字幕特效,滤镜,转场特效等各种功能,全方位满足开发者的需求,并可以快速植入到APP中. 手机端的摄像头录制和直播功 ...
- OC 实现一个TODO宏
实现一个TODO宏 转载http://blog.sunnyxx.com/2015/03/01/todo-macro/ 实现一个能产生warning的TODO宏,用于在代码里做备忘,效果: 下面一步步来 ...
- 按键精灵txt判断
句子 = "度阿斯达娘阿婶是大的百度知道" 词 = "百度知道" MyPos = Instr(句子, 词) If MyPos > 0 Then Tra ...
- ZooKeeper系列(四)
一.配置服务 配置服务是分布式应用所需要的基本服务之一,它使集群中的机器可以共享配置信息中那些公共的部分.简单地说,ZooKeeper可以作为一个具有高可用性的配置存储器,允许分布式应用的参与者检索和 ...
- 深入理解python对象及属性
类属性和实例属性首先来看看类属性和类实例的属性在python中如何存储,通过__dir__方法来查看对象的属性 >>> class Test(object): pass>> ...