#字典:当索引不好用时
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. IEEE Trans 2006 使用K-SVD构造超完备字典以进行稀疏表示(稀疏分解)

    K-SVD可以看做K-means的一种泛化形式,K-means算法总每个信号量只能用一个原子来近似表示,而K-SVD中每个信号是用多个原子的线性组合来表示的.    K-SVD算法总体来说可以分成两步 ...

  2. Android偏好设置(1)概述和Preferences简介

    1.Overview Instead of using View objects to build the user interface, settings are built using vario ...

  3. 对char类型的数组进行冒泡排序

    package maopaopaixu; import java.util.Arrays; import java.util.Scanner; public class Demo02 { public ...

  4. 473 Matchsticks to Square 火柴拼正方形

    还记得童话<卖火柴的小女孩>吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法.不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到.输入为小女孩拥有火柴的 ...

  5. 455 Assign Cookies 分发饼干

    假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j ,都有一个尺寸 ...

  6. ubu下编译安装php7

    第一步: 安装依赖库zlib.libpng.freetype.jpegsrc.libxml2.libgd.freetds.mhash.libmcrypt.mcrypt(依赖于mhash和libmcry ...

  7. [转]在 Azure 云服务上设计大规模服务的最佳实践

    本文转自:http://technet.microsoft.com/zh-cn/magazine/jj717232.aspx 英文版:http://msdn.microsoft.com/library ...

  8. 【Hibernate】Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

    今天用hibernate框架写crm项目时遇到报错: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' n ...

  9. .net mvc 运行监控和错误捕捉

    方法类 /// <summary> /// 运行监控类 /// </summary> [AttributeUsage(AttributeTargets.Class | Attr ...

  10. t-sql的楼梯:超越基本级别6:使用案例表达式和IIF函数

    t-sql的楼梯:超越基本级别6:使用案例表达式和IIF函数 源自:Stairway to T-SQL: Beyond The Basics Level 6: Using the CASE Expre ...