Python学习笔记:字典

版权声明:转载请联系博主 https://blog.csdn.net/Watkins_OS/article/details/81698595

目录

1. 映射

2. 字典

3. 字典方法


1. 映射

映射让你能够使用任何不可变的对象(最常用的是字符串和元组)来标识其元素。字典是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下。键可能是数、字符串或元组。

字典由键及其相应的值组成,这种键-值对成为项。每个键和其值之间都用冒号(:)分割,项之间用逗号分隔,而整个字典放在花括号内。在字典(以及其他映射类型)中,键必须是独一无二的。

2. 字典

可使用函数dict从其他映射(如其他字典)或键-值对序列创建字典。

相比于检查列表是否包含指定的值,检查字典是否包含指定的键的效率更高。数据结构越大,效率差距就越大。

要对字典执行字符串格式设置操作,不能使用format和命名参数,而必须使用format_map

>>> nameAge = {"aliy":21, "ketty":24, "willy":12}
>>> "aliy's age is {aliy}".format_map(nameAge)
"aliy's age is 21"

3. 字典方法

clear:就地删除所有的字典项,什么都不返回(或者说返回None)。

copy:返回一个新字典,其包含的键-值对与原来的字典相同(浅复制,因为值本身是原件,而非副本)。

>>> user = {"usr":"admin", "passwd":['admin', 'zero', 'one']}
>>> userCpy = user.copy()
>>> userCpy['usr'] = 'better'    # 替换副本中的值时原件不受影响
>>> userCpy['passwd'].remove('one')    # 修改副本中的值(就地修改)时原件将发生变化
>>> userCpy
{'usr': 'better', 'passwd': ['admin', 'zero']}
>>> user
{'usr': 'admin', 'passwd': ['admin', 'zero']}

解决办法:使用模块copy中的函数deepcopy执行深复制,即同时复制值及其包含的所有值。

>>> from copy import deepcopy
>>> stud = {"name":["aliy", "bob"]}
>>> studDcp = deepcopy(stud)    # 注意调用方式
>>> stud["name"].append("ketty")
>>> studDcp
{'name': ['aliy', 'bob']}

fromkeys:创建一个新字典,其中包含指定的键,且每个键对应的值都是None。

>>> dict.fromkeys(['name', 'age'], 'unknown')    # 不使用默认值None,可提供指定的值
{'age': 'unknown', 'name': 'unknown'}

get:访问字典中的对应的键,如果访问的键不存在,返回指定的默认值(None),也可以提供指定的值。

items:返回一个包含所有字典项的列表,其中每个元素都为(key, value)的形式。(返回值属于字典视图的特殊类型,视图的一个优点是不复制。)

>>> iPhone = {'usr':'admin', 'country': 'HongKong', 'model': '7'}
>>> iPhone.items()    # 字典视图模式
dict_items([('usr', 'admin'), ('model', '7'), ('country', 'HongKong')])

>>> list(iPhone.items())    # 列表化
[('usr', 'admin'), ('model', '7'), ('country', 'HongKong')]

keys:返回一个字典视图,其中包含指定字典中的键。

pop:获取与指定键相关联的值,并将该键-值对从字典中删除。

popitem:随机地弹出一个字典项

setfault:指定的键存在时返回其值并保持字典不变,如果指定的键不存在时则返回指定的值并相应的更新字典。

update:使用一个字典中的项来更新另一个字典。

values:返回一个由字典中的值组成的字典视图。

猜你喜欢

转载自blog.csdn.net/Watkins_OS/article/details/81698595