#字典:当索引不好用时
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的更多相关文章

  1. Python中字典和集合

    Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...

  2. Python的字典

    1.  Python的字典 1.1.  字典的定义 在Python中,字典是一种key-value的数据类型,也是唯一的映射类型:字典还是另一种可变容器类型,且可存储任意类型对象,其中也可包括其他容器 ...

  3. Python的字典和JSON

    Python的字典和JSON在表现形式上非常相似 #这是Python中的一个字典 dic = { 'str': 'this is a string', 'list': [1, 2, 'a', 'b'] ...

  4. python基础--字典

    Python基础--字典 字典的常用函数: dict.clear( )--->无任何返回值 说明: 清除字典内的所有的元素 语法: In [5]: dict.clear? Type: metho ...

  5. Python dictionary 字典 常用法

    Python dictionary 字典 常用法 d = {} d.has_key(key_in)       # if has the key of key_in d.keys()          ...

  6. python有序字典OrderedDict()

    转python创建有序字典OrderedDict # -*- coding:utf-8 -*- """ python有序字典 需导入模块collections " ...

  7. python:字典嵌套列表

    Python的字典{ }以键值对的形式保存数据,可以以键来访问字典中保存的值而不能用下标访问.字典中几乎可以包含任意的变量,字典,数列,元组.数列也一样. python的列表[ ]与字典不同,列表通过 ...

  8. Python的字典类型

    Python的字典类型为dict,用{}来表示,字典存放键值对数据,每个键值对用:号分隔,每个键值对之间用,号分隔,其基本格式如下: d = {key1 : value1, key2 : value2 ...

  9. python基础—字典

    阅读文本需要3分钟,不建议跳读 节目清单 字典是python中最重要的数据类型,字典由“键-值”对组成的集合,字典中的“值”通过“键”来引用.这里将介绍字典的定义.访问.排序等功能. 字典的创建 字典 ...

  10. 深入Python(1): 字典排序 关于sort()、reversed()、sorted()

    http://www.cnblogs.com/BeginMan/p/3193081.html 一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠 ...

随机推荐

  1. A - Supercentral Point CodeForces - 165A

    One day Vasya painted a Cartesian coordinate system on a piece of paper and marked some set of point ...

  2. 字符串处理 BestCoder Round #43 1001 pog loves szh I

    题目传送门 /* 字符串处理:是一道水题,但是WA了3次,要注意是没有加'\0'的字符串不要用%s输出,否则在多组测试时输出多余的字符 */ #include <cstdio> #incl ...

  3. spring入门笔记-(一)、spring boot HelloWorld

    什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员 ...

  4. 10-1 浮动框架iframe

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. java中什么包不需要导入

    java中Math.random()*10;在math包中不需要导入: 即import java.lang.Math; 即lang下的所有包都不需要导入.

  6. 关于c头文件的使用的小记录

    在用visual studio实现数据结构上的一些结构与算法的时候,想在一个工程中建立几个文件,然后主文件可以使用其他文件的函数与变量(比如定义的结构体还有数据结构接口函数).  我们可以利用头文件来 ...

  7. paint之Graphics

    在paint方法里面,这个Graphics类就相当于一支画笔.而且就画在那个component里面,比如frame. 看例子代码: import java.awt.*; public class Te ...

  8. 安装Kube

    安装Docker yum install -y docker 加速Docker DOCKER_MIRRORS="https://5md0553g.mirror.aliyuncs.com&qu ...

  9. Snort里的规则目录文件解读(图文详解)

    不多说,直接上干货! snort的规则啊,是基于文本的,它通常存在于snort程序目录中或者子目录中,规则文件按照不同的组,进行分类存放的. snort的安装目录 [root@datatest sno ...

  10. [转]强制取消TFS2008中其它成员的签出文件

    本文转自:http://www.cnblogs.com/georgehu/archive/2010/10/23/1859573.html 有个项目,以前的成员离职了,刚好又签出了一个文件在TFS中并且 ...