Python编程:深入理解字典

发表时间: 2022-11-18 20:36

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

注意:dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict

键必须是唯一的,但值则不必。

>>> dictone={'1':1,'1':2}>>> dictone{'1': 2}>>> dicttwp={'1':2,'2':2}>>> dicttwp{'1': 2, '2': 2}

值可以取任何数据类型,但键必须是不可变的,如字符串,数字。

>>> dicttree={['1']:1}Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: unhashable type: 'list'>>> dicttree={1:[1,2]}>>> dicttree{1: [1, 2]}>>>

如何创建空字典

>>> dicteone={}>>> dicteone{}#用内置函数创建>>> dictone=dict()>>> dictone{}

访问字典的值

>>> dictone={'1':2}>>> dictone['1']2

假如访问不存在的值

>>> dictone['2']Traceback (most recent call last):  File "<stdin>", line 1, in <module>KeyError: '2'

如何解决这个问题呢,可以这样访问,如果不存在,就返回默认值

>>> dictone={'1':2,'2':2}>>> print(dictone.get(1,None))None

修改字典的值

>>> dictone={'1':2}>>> dictone['1']=23>>> dictone{'1': 23}

字典相关的删除

>>> dictone={'1':2,'2':2}>>> del  dictone['1']#删除值>>> dictone{'2': 2}>>> dictone={'1':2,'2':2}>>> dictone.pop('1')#删除key,这里会返回值2>>> dictone#结果{'2': 2}>>> dictone={'1':2,'2':2}>>> dictone{'1': 2, '2': 2}>>> dictone.popitem()#删除最后的一个keyvalue('2', 2)>>> dictone{'1': 2}>>> dictone.clear()#清空字典>>> dictone{}#删除字典>>> dictone={'1':2,'2':2}>>> del dictone>>> dictoneTraceback (most recent call last):  File "<stdin>", line 1, in <module>NameError: name 'dictone' is not defined

字典长度

>>> dictone={'1':2,'2':2}>>> len(dictone)2

字典复制

>>> dictone={'1':2,'2':2}>>> one=dictone.copy()>>> one{'1': 2, '2': 2}

判断key是否存在

>>> dictone={'1':2,'2':2}>>> '1' in dictoneTrue

字典的每一项

>>> dictone={'1':2,'2':2}>>> dictone.items()dict_items([('1', 2), ('2', 2)])

获取字典所有的key和values

>>> dictone.keys()dict_keys(['1', '2'])>>> dictone.values()dict_values([2, 2])

字典的更新另一个字典

>>> dictone={'1':2,'2':2}>>> dictone.update({'23':1})>>> dictone{'1': 2, '2': 2, '23': 1}

字典增加一个key,如果key不存在,value就设置为默认的

>>> dictone={'1':2,'2':2}>>> dictone.setdefault(3,'2')'2'>>> dictone{'1': 2, '2': 2, 3: '2'}

字典键的特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住

2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行

之前讲列表的时候,我们有列表推导式,通用的,在字典也有。实现方式如下

>>> d = {key : value  for key in  ['A','B']           for value in [1,2,3]}>>> d{'A': 3, 'B': 3}

大概的字典的相关的应用,到这里就分享完毕了。