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字典 的全部内容, 来源链接: utcz.com/z/389054.html