码迷,mamicode.com
首页 > 编程语言 > 详细

python字典

时间:2018-08-10 01:08:13      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:数据结构   大括号   py函数   返回   顺序   ext   方式   逗号   技术   

概念

一种通过名字引用值的数据结构为映射,而字典是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字典

标签:数据结构   大括号   py函数   返回   顺序   ext   方式   逗号   技术   

原文地址:https://www.cnblogs.com/whych/p/9452517.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!