点击跳转
《Python入门系列目录》
- 一组键值对的数据结构
- 每个键对应于一个值
- 在字典中,键不能重复
- 根据键可以查询到值
- 字典长度是可变的,可以通过对键信息赋值实现增加或修改键值对
- 字典的键只能使用不可变的对象,但字典的值可以使用不可变或可变的对象
- 字典符合数据库中数据表格的概念,它能表示基于关系模型的数据库
1. 创建字典
-
花括号{}创建
- {<键1>:<值1>, <键2>:<值2>, …, <键n>:<值n>}
-
其中,键和值通过冒号连接,不同键值对通过逗号隔开
-
dict()函数创建
-
主要是将包含双值子序列的序列对象转换为字典类型
dict([(1, 2), (3, 4), (5, 6)]) dict(([1, 2], [3, 4], [5, 6]))
-
直接向dict函数传入键和值创建,用 = 连接键与值
dict(key_1=value_1, key_2=value_2, ... , key_n=value_n)
-
字典中键值对中的值还可以是字典
mdict2 = {'H': {'count': 1, 'freq': 0.2}, 'e': {'count': 1, 'freq': 0.2}, 'l': {'count': 2, 'freq': 0.4}, 'o': {'count': 1, 'freq': 0.2}}
-
2. 提取字典元素
- dict[key]
- in语句
- 判断键是否存在
- 使用字典方法get
- dict.get(key, default=None)
3. 字典基本操作
-
增添
- 键访问赋值增添
- dict_name[newkey] = new_value
- dict_name.update(dict)
- 将两个字典中的键值对进行合并,如果存在相同键,传入字典中的键所对应的的值会替换原有值,实现值更新的效果
- 键访问赋值增添
-
删除
- del dict_name[key]
- 删除但不会返回对应的值
- dict_name.pop(key)
- 删除并返回对应的值
- dict_name.clear()
- 变成空字典
- del dict_name[key]
-
修改
-
dict_name[key] = new_value
-
查询
- dict_name.keys()
- 用于获取字典中的所有键
- dict_name.values()
- 用于获取字典中的所有值
- dict_name.items()
- 用于获取字典中所有键值对
- dict_name.keys()
-
其他常用操作
-
以给定键值创建值为空的字典
- dict.fromkeys()
- dict.fromkeys(seq, [value])
adict = dict.fromkeys(['name', 'age', 'sex']) print(adict) # {'name': None, 'age': None, 'sex': None}
-
使用dict利用已有数据创建字典
keys = ['a', 'b', 'c', 'd'] values = [1, 2, 3, 4] dictionary = dict(zip(keys, values)) # zip:返回元组 print(dictionary) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
-
for <变量名> in <字典名>:进行遍历
- for i in mydict.items()
- 打印出来的是每个键值对分别形成的元组
- for i in mydict
- 打印出来的是键
- for i in mydict.values()
- 打印出来的是值
- for i in mydict.items()
-
按照值进行排序
sorted(dict_name.items(), key=lambda x: x[1], reverse=True) # 降序
-
4. 字典与列表
- 列表是序列,字典不是序列
- 序列是使用索引方式获取元素的,而字典是使用键来获取元素的
- 序列元素的插入是和索引相关的,而字典元素的插入是和键相关的。因此列表有append函数、切片功能等,而字典没有
- 列表是一种通用的数据结构,它里面的元素可以千变万化。列表可以被视为有序列的一群东西,而字典不然,它是key-value这种结构的独特组合
- 所以,字典对于寻找某一个key的记录,会有快速的方式来实现,这种实现方式叫做哈希(Hash)方式