Python 映射数据类型(字典数据类型 dict )详解 [学习 Python 必备基础知识][看此一篇就够了][对 Python 字典的操作][对字典键值对的操作][Python 字典常用方法]

您的“关注”和“点赞”,是信任,是认可,是支持,是动力…

如意见相佐,可留言。
本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。

在这里插入图片描述

1 Python 映射数据类型概述

mapping 对象会将 hashable 值映射到任意对象。 映射属于可变对象。

目前仅有一种标准映射类型字典

Python 字典(dict)是一种无序的、可变的序列,元素以“键值对(key-value)”的形式存储。

字典的键“几乎”可以是任何值。
hashable 的值,即包含列表、字典或其他可变类型的值(此类对象基于值而非对象标识进行比较)不可用作键。
数字类型用作键时遵循数字比较的一般规则:如果两个数值相等 (例如 11.0) 则两者可以被用来索引同一字典条目。 (注意:由于计算机对于浮点数存储的只是近似值,因此将其用作字典键是不明智的。)
字典中的键必须唯一,不支持同一个键出现多次,否则只会保留最后一个键值对。

2 Python 创建字典

2.1 使用 { } 创建字典

使用``{ }` 创建字典的语法格式如下所示:

dictname = {'key1': 'value1', 'key2': 'value2', ..., 'keyn': 'valuen'}

对以上格式说明,

  • dictname: 表示字典变量名。
  • keyn: valuen: 表示各个元素的键值对。注意:同一字典中的各个键必须唯一,不能重复,否则只会保留最后一个键值对。
  • 字典中每个元素都包含两部分,分别是键(key)和值(value),因此在创建字典时,键和值之间使用冒号:分隔,相邻元素之间使用逗号,分隔,所有元素放在大括号{ }中。

举例如下所示:

# 压索的四个技能
dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}

print(dict_demo)

运行结果:

{'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}

2.2 通过 fromkeys() 方法创建字典

dict 对象提供 fromkeys(list,value=None) 方法创建带有默认值的字典。
通常用于初始化字典(设置 value 的默认值)。

使用格式如下所示:

dictname = dict.fromkeys(list,value=None)

对以上格式说明,

  • dictname:fromkeys() 方法的返回值(创建好的字典)会赋值给变量 dictname。
  • list:list 参数表示要创建的字典中所有键组成的列表。
  • value:value 参数表示要创建的字典的元素的值的默认值,所有元素的值都为这个默认值;如果不写,则为空值 None

举例如下所示:
例一,

list1 = ['Q', 'W', 'E', 'R']
dict_demo = dict.fromkeys(list1)  # 不写 value 参数,则为空值 `None`
print(dict_demo)

运行结果:

{'Q': None, 'W': None, 'E': None, 'R': None}

例二,

list1 = ['Q', 'W', 'E', 'R']
dict_demo = dict.fromkeys(list1, '斩钢闪')  # value 参数表示要创建的字典的元素的值的默认值,所有元素的值都为这个默认值

print(dict_demo)

运行结果:

{'Q': '斩钢闪', 'W': '斩钢闪', 'E': '斩钢闪', 'R': '斩钢闪'}

2.3 通过 dict() 映射函数创建字典

举例如下所示:

# 字符串类型的 键 不能带引号,否则会报错
dict1 = dict(Q='斩钢闪', W='风之壁障', E='踏前斩', R="狂风绝息斩")
print('dict1 =', dict1)


# 向 dict() 函数传入列表或元组,而它们中的元素又各自是包含 2 个元素的列表或元组,其中第一个元素作为键,第二个元素作为值。
dict2 = dict([('Q', '斩钢闪'), ('W', '风之壁障'), ('E', '踏前斩'), ('R', '狂风绝息斩')])
print('dict2 =', dict2)

# 通过应用 dict() 函数和 zip() 函数,可将前两个列表转换为对应的字典。
keys = ['Q', 'W', 'E', 'R']
values = ['斩钢闪', '风之壁障', '踏前斩', '狂风绝息斩']
dict3 = dict(zip(keys, values))
print('dict3 =', dict3)

运行结果:

dict1 = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}
dict2 = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}
dict3 = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}

2.4 创建空的字典

举例如下所示:

dict_demo1 = {}  # 直接使用 {} 创建空字典
dict_demo2 = dict()  # 使用 dict() 内置函数创建空字典

print(type(dict_demo1))
print('dict_demo1 =', dict_demo1)
print(type(dict_demo2))
print('dict_demo2 =', dict_demo2)

运行结果:

<class 'dict'>
dict_demo1 = {}
<class 'dict'>
dict_demo2 = {}

3 Python 访问字典

3.1 通过键(key)来访问对应的值。

使用格式如下所示:

dictname[key]

对以上格式说明,

  • dictname:表示被访问字典的变量名。
  • key:表示键名。注意:键必须是存在的,否则会抛出异常。

举例如下所示:

例一,

dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}

print(dict_demo['R'])

运行结果:

狂风绝息斩

例二,

dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}

print(dict_demo['B'])  # 字典中不存在 'B' 键

运行结果:

Traceback (most recent call last):
  File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 11, in <module>
    print(dict_demo['B'])  # 字典中不存在 'B' 键
KeyError: 'B'

3.2 通过 dict 对象提供的 get() 方法访问指定键对应的值

Python 更推荐使用 dict 对象提供的 get() 方法来获取指定键对应的值。

使用格式如下所示:

dictname.get(key[,default])

对以上格式说明,

  • dictname:被访问字典的变量名。
  • key:表示指定的键。当指定的键不存在时,get() 方法不会抛出异常。
  • default:用于指定要查询的键不存在时,返回的默认值;如果不手动指定,会返回 None

举例如下所示:

dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}

print(dict_demo.get('R'))
print(dict_demo.get('B', '该键不存在'))

运行结果:

狂风绝息斩
该键不存在

4 Python 删除字典

Python 自带垃圾回收功能,会自动销毁不用的字典,一般不需要通过 del 关键字来手动删除。

手动删除字典使用 del 关键字。

举例如下所示:

dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}

print('删除前 dict_demo =', dict_demo)

del dict_demo  # 删除字典操作

print('删除后 dict_demo =', dict_demo)

运行结果:

删除前 dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}
Traceback (most recent call last):
  File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 15, in <module>
    print('删除后 dict_demo =', dict_demo)
NameError: name 'dict_demo' is not defined

5 对 Python 字典键值对的基本操作

5.1 向 Python 字典添加键值对

向 Python 字典添加键值对,直接给不存在的 key 赋值即可。

使用语法格式如下所示:

dictname[key] = value

对以上格式说明:

  • dictname: 表示字典名称。
  • key: 表示新的键。
  • value: 表示新的值,只要是 Python 支持的数据类型都可以。

举例如下所示:

dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}

print('添加前 dict_demo =', dict_demo)

dict_demo['B'] = '回城'  # 为字典添加键值对操作

print('添加后 dict_demo =', dict_demo)

运行结果:

添加前 dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}
添加后 dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩', 'B': '回城'}

5.2 从 Python 字典删除键值对

删除字典中的键值对,使用 del 语句。

举例如下所示:

dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}

print('添加前 dict_demo =', dict_demo)

del dict_demo['R']  # 删除字典键值对操作

print('添加后 dict_demo =', dict_demo)

运行结果:

添加前 dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}
添加后 dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩'}

5.3 为 Python 字典修改键值对

Python 字典中键(key)的名字不能被修改,我们只能修改值(value)。

字典中各元素的键必须是唯一的,因此,如果新添加元素的键与已存在元素的键相同,那么键所对应的值就会被新的值替换掉,以此达到修改元素值的目的。

举例如下所示:

dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}

print('修改前 dict_demo =', dict_demo)

dict_demo['R'] = '压索大招'  # 修改字典值

print('修改后 dict_demo =', dict_demo)

运行结果:

修改前 dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}
修改后 dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '压索大招'}

5.4 判断键值对是否存在

判断字典中是否存在指定键值对:

  • 首先,判断字典中是否有对应的键;
  • 然后,如果键存在,再通过访问字典的方法可以轻易的获取对应的值。

判断字典是否包含指定键值对的键,可以使用 innot in 运算符(都是基于 key 来判断的)。

举例如下所示:

dict_demo = {'Q': '斩钢闪', 'W': '风之壁障', 'E': '踏前斩', 'R': '狂风绝息斩'}

print('R' in dict_demo)  # 判断字典中是否存在键 'R'
print('R' not in dict_demo)  # 判断字典中是否不存在键 'R'

运行结果:

True
False

6 Python 字典常用方法详解

请参见博文 《Python 字典常用方法详解》

【文章其它地址】

微信公众号:码农阿杰

博客园

【参考资料】

Python 官网

Python 3.8.2 documentation

原创文章 28 获赞 46 访问量 2252

猜你喜欢

转载自blog.csdn.net/manongajie/article/details/105582802