转载请注明出处

Python字典(dict)是一个很常用的复合类型,其它常用符合类型有:数组(array)、元组(touple)和集合(set)。字典是一个key/value的集合,key可以是任意可被哈希(内部key被hash后作为索引)的类型。因此,key可以是文本、数字等任意类型。如果两个数字'=='判断相等,那么key就相等,value会产生覆盖(例如:1 == 1.0 # => True)。注意,浮点数比较很不精确,因此千万不要用浮点数作为key!

字典是Python的内置类型,有字面量的表示方法——逗号分割的'key: value'元组:

{'one': 1, 'two':2, 'three':3}

当然,还可以用dict函数来生成返回字典(摘自官方文档的一个例子):

>>> a = dict(one=1, two=2, three=3)
>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
>>> d = dict([('two', 2), ('one', 1), ('three', 3)])
>>> e = dict({'three': 3, 'one': 1, 'two': 2})
>>> a == b == c == d == e
True

dict函数可接收的参数形式相当丰富。第一行用关键字参数来生成字典,很容易理解。第三行与第四行其实是相同的方式,zip函数将两个数组参数两两合并成为一个二元组数组,所以,还可以传入二元组数组作为参数。直接传入一个字面量的字典表示法也可以。当然,这几种形式后面还可以继续加关键字参数:

>>> d = dict([('two', 2), ('one', 1), ('three', 3)], four=4, five=5)
>>> e = dict({'three': 3, 'one': 1, 'two': 2}, four=4, five=5)

后面的关键字参数key如果在前面出现过,那么将会覆盖前面的值。

字典的常见操作

'd'表示一个字典实例,'dict'表示字典类

len(d) 返回字典中有多少项

d[key] 返回索引为'key'的值,不存在抛出KeyError

d[key] = value 设置'key'项的值为'value'

del d[key] 删除索引为'key'的项,不存在抛出KeyError

key in d 返回'key'是否在字典内

key not in d

高级操作

d.clear() 清除所有项

d.copy() 返回一个克隆的字典

iter(d) 返回一个iterable对象,迭代字典的key。相当于d.iterkeys()

>>> d = dict(one=1, two=2, three=3)
>>> it = iter(d)
>>> it.next() # => "three" # 字典插入是无顺序的
>>> it.next() # => "two"
>>> it.next() # => "one"
>>> it.next() # => StopIteration

dict.fromkeys(seq[,value]) 通过一个序列对象(列表、字典、集合的keys等)创建字典,value为每个项的默认值

d.get(key,[default]) 获取key对应的值,不存在则返回default值。与d[key]的区别是前者不抛出KeyError,而是返回default值

d.keys() 将所有keys作为一个列表返回,相当与list(d)

d.values()

d.items() 返回一个(key, value)的元组列表

d.iterkeys() 返回一个可key的迭代对象

d.itervalues

d.iteritems

d.pop(key[,default]) 删除指定的项并返回值,如果不存在则返回default。若default未设置则在key不存在的情况下抛出KeyError

d.popitem() 删除随机的一个项,并返回(key, value)

d.setdefault(key[,default])d.pop很相似,不过,在没有指定key的情况下该函数会插入这个项并返回

d.update([other]) 与用dict创建字典所接受的参数类型相同,创建或者更新项

d.viewkeys() 返回view对象,字典改变,view对象也会改变

d.viewvalues()

d.viewitems()

View对象

v不能进行更新和索引,需先转换为其他序列类型。

len(v)

iter(v)

x in v

v & other 交集,other可以是任何序列对象

v | other 并集

v - other 补集

v ^ other 非交集

Python字典详解的更多相关文章

  1. python 字典详解

    1.字典的定义 字典类似于列表,但相对于列表来说字典更加通用,列表的下标必须必须为整数,而字典下标则可以为任意字符串/数字等,不可以是可变数据类型(列表,数组,元组) 字典包含下标(keys)集合和值 ...

  2. Python数据类型详解——字典

    Python数据类型详解--字典 引子 已经学习了列表,现在有个需求--把公司每个员工的姓名.年龄.职务.工资存到列表里,你怎么存? staff_list = [ ["Kwan", ...

  3. python 数据类型详解

    python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...

  4. python数据类型详解(全面)

    python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...

  5. Python Collections详解

    Python Collections详解 collections模块在内置数据结构(list.tuple.dict.set)的基础上,提供了几个额外的数据结构:ChainMap.Counter.deq ...

  6. 转 python数据类型详解

    python数据类型详解 目录 1.字符串 2.布尔类型 3.整数 4.浮点数 5.数字 6.列表 7.元组 8.字典 9.日期 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(' ...

  7. 【python】详解事件驱动event实现

    [python]详解事件驱动event实现 所有的计算机程序都可以大致分为两类:脚本型(单次运行)和连续运行型(直到用户主动退出). 1.脚本型:脚本型的程序包括最早的批处理文件以及使用Python做 ...

  8. Python闭包详解

    Python闭包详解 1 快速预览 以下是一段简单的闭包代码示例: def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >> ...

  9. [转] Python Traceback详解

    追莫名其妙的bugs利器-mark- 转自:https://www.jianshu.com/p/a8cb5375171a   Python Traceback详解   刚接触Python的时候,简单的 ...

随机推荐

  1. TSP问题(旅行商问题)[分支限界法]

    问题: 旅行商从 a 开始周游下图所有的城市一次,然后回到 a,城市之间的旅行代价在图中标明. 请选择一个最优的行走顺序使得周游所有城市的代价最小. 思路: 随便怎么周游,对于一个城市来说,一定有一条 ...

  2. MySQL服务器的线程数查看方法

    mysql重启命令:/etc/init.d/mysql restart MySQL服务器的线程数需要在一个合理的范围之内,这样才能保证MySQL服务器健康平稳地运行.Threads_created表示 ...

  3. cookie、session、sessionid的区别

    我们都知道银行,银行的收柜台每天要接待客户存款/取款业务,可以有几种方案: 1.凭借柜台职员的记忆,由收柜台职员来为每位顾客办理存款/取款业务,单凭职员的记忆力,要记到每位顾客的相貌,并迅速这个顾客当 ...

  4. doubango(2)--底层协议栈结构分析

    tsip_stack_handle_t 实例 1.        tsip_stack_handle_t的创建 在底层,真正运转的协议栈结构式tsip_stack_handle_t的一个实例,它的创建 ...

  5. Eclipse Sort Members默认之后恢复的方法

    alt+shift+s -- > m CRLF 默认一种排序之后,对话框就再也出不来了: 使用这样的方法: window - preference - Java | Java dialogs | ...

  6. js数组快速排序

    <script type="text/javascript"> var arr = [1, 2, 3, 54, 22, 1, 2, 3]; function quick ...

  7. python bottle 简介

    bottle是一个轻量级的python web框架, 可以适配各种web服务器,包括python自带的wsgiref(默认),gevent, cherrypy,gunicorn等等.bottle是单文 ...

  8. python中关于__init__模块文件的理解

    一般来说新建的一个包下,必然会有一个__init__文件?那么这个文件到底邮有和作用呢? 总结几点如下: 1.__init__文件在包下,其中定义了包的属性,方法;必须要有这个文件,如果没有的话,这个 ...

  9. HTML5 JavaScript API

    W3C官方指定的HTML5规范已经修订了很多次,HTML5这个概念是与javascript API相捆绑的语义标记.在过去这些年中,HTML5这个词所指代的范围正以惊人的的速度膨胀,某种程度上已经成为 ...

  10. Codeforces Round #257 (Div. 1)A~C(DIV.2-C~E)题解

    今天老师(orz sansirowaltz)让我们做了很久之前的一场Codeforces Round #257 (Div. 1),这里给出A~C的题解,对应DIV2的C~E. A.Jzzhu and ...