python字典

Posted 心之所动,就随风去吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python字典相关的知识,希望对你有一定的参考价值。

概念

一种通过名字引用值的数据结构为映射,而字典是python中唯一内建的映射类型。字典由多个键与其对应的值构成,键/值也成为项。每个键值之间用冒号隔开,项之间用逗号隔开,整个字典是由一对大括号括起来。空字典不包括任何项。键可以是数字、字符串和元组,并且唯一,但值不唯一。

某些情况,字典比列表更加适用:

  • 表示游戏棋盘的状态,每个键都是由坐标值组成的元组。
  • 存储文件的修改次数,用文件名作为键。
  • 电话/地址簿

 

创建与操作

创建

可以通过下面方式来创建,

也可以通过dict函数来创建

通过序列对来建立:

通过关键字来创建:

空字典

dict()

    {}

操作

len(d),返回d中项的数量

d[k],返回关键字k对应的值

d[k]=v,将值v关联到k上

del d[k],删除键为k的项

k in d,检查d中是否含有键为k的项

 

字典的格式化

在每个转换符%的后面,可以加上键(用圆括号括起来),后面再跟其他说明元素。

使用字典格式化的方法,还可以使用模版格式化

>>> phonebook = {\'Beth\': \'9102\',\'Alice\': \'2341\',\'Cecil\': \'3258\'}

>>> "Cecil\'s phone number is %(Cecil)s." %phonebook

"Cecil\'s phone number is 3258."

 

字典的方法

clear

copy

fromkeys

get

has_key

items iteritems

keys iterkeys

pop popitem

setdefault

update

 

clear:清除字典中所有的项,包括原始字典中所有的元素,无返回值(None)。

#例1不使用clear方法

>>> x={}

>>> y=x #x,y指向同一字典

>>> x[\'key\']=\'value\'

>>> y

{\'key\': \'value\'}

>>> x={} #x指向另一新的字典,而原字典不变,y仍指向原来的字典

>>> y

{\'key\': \'value\'}

>>>

#例2使用clear方法清除,清除了原字典

>>> x={}

>>> y=x

>>> x[\'key\']=\'value\'

>>> y

{\'key\': \'value\'}

>>> x.clear() #使用clear()清空了原始字典

>>> y

{}

 

cpoy:返回一个具有相同键值对的新字典,此方法实现的是浅复制。

由上可以发现,当在副本中替换值的时候,原始字典不受影响,而进行修改的时候,原始字典也跟着改变了。

但是深复制就能避免这个问题,需要deepcopy函数来完成。

由上可以发现深度复制的副本可以完全保留原始字典数据。

 

fromkeys:使用给定的键建立新的字典,每个键默认对应的值为None,也可以自己提供默认值。

>>> {}.fromkeys([\'name\',\'age\']) #构造一个空字典

{\'age\': None, \'name\': None}

 

>>> dict.fromkeys([\'name\',\'age\']) #直接在所有字典的类型dict上面调用

{\'age\': None, \'name\': None}

 

>>> dict.fromkeys([\'name\',\'age\'],\'(unkown)\') #自己提供默认值

{\'age\': \'(unkown)\', \'name\': \'(unkown)\'}

 

get:访问字典项的方法,更为宽松。使用get访问一个不存在的键,不会出现异常,而返回None。也可以自定义默认值。当键存在就是普通字典查询一样。

 

has_key:检查字典中是否含有给出的键。python3中不包括这个函数。

 

items和iteritems:items将所有的字典以列表的方式返回,返回时没有特殊的顺序。而iteritems会返回一个迭代器而不是列表。

 

keys和iterkeys:将字典中的键以列表的形式返回,而iterkeys则返回针对键的迭代器。

 

values和itervalues:values以列表的形式返回值,itervalues返回值的迭代器。返回值的列表中可以包含重复的元素。

 

pop和popitem:pop方法获取对应给定键的值,然后将这个键值对从字典中删除。popitem弹出随机的项,因为字典是无序的,也就不会像列表有最后一个元素的概念。

 

setdefualt:类似get方法。当键不存在的时候,setdefault返回默认值并相应的更新字典;如果键存在,则返回其对应的值,不改变字典。

 

update:利用一个字典项更新另一个字典。如键不存在则添加,相同的键则覆盖。

以上是关于python字典的主要内容,如果未能解决你的问题,请参考以下文章

python字典/字典的键值/字典属性的添加

python 18:字典的赋值

python中字典的问题

Python字典嵌套字典排序,该怎么处理?

python字典

python字典对比