前一篇我们讲了 dict 的一些内置函数。这一篇,我们接着对 dict 的相关内容进行补充,主要是利用 dict 本身的一些特性所能完成的一些数据结构和数据处理方面的操作。

由于 dict 本身的特性,要求:
借用此性质,可以完成字典的嵌套,即某个 key 的 value 也是一个字典(这一结构在 JSON 数据的解析上极为重要):
user = {"name": "RainBomb","info": {"age": 18,"address": "China" }}print(user["info"]["address"])# Output: China由于 value 也是字典,因此 user["info"] 得到的就是字典,同样能对其使用中括号操作取值。
由于 value 的灵活,我们能用字典存储各种千奇百怪的数据:
import datetimeclass User:def __init__(self, name, age):self.name = nameself.age = ageinfo = {"user": User("RainBomb", 18),"time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}print(info)# Output: {'user': <__main__.User object at 0x109f2bd70>, 'time': datetime.datetime(2026, 5, 14, 10, 25, 42, 3132)}print(info["user"].name)# Output: RainBomb主要是使用如下的语法生成字典或筛选数据:
{k: v for k, v in dict.items() if something}name_list = ["张三", "李四", "王五"]# 下标当做key,名字当做valued = {i: name for i, name in enumerate(name_list)}print(d)# Output: {0: '张三', 1: '李四', 2: '王五'}score = {"语文": 80, "数学": 95, "英语": 60}# 筛选大于80分的科目new_score = {k:v for k, v in score.items() if v > 80}print(new_score)# Output: {'数学': 95}对字典的排序可以借助 sorted() 函数:
score = {"语文": 80, "数学": 95, "英语": 60}# 按成绩升序排序res = sorted(score.items(), key=lambda x: x[1])print(dict(res))# Output: {'英语': 60, '语文': 80, '数学': 95}💡 注意:
sorted() 需接收一个序列数据(如 list、tuple)才能正确排序,因此需要先用 items() 取出字典的键值对为元组列表的形式。 sorted() 的参数 key 接受一个判断逻辑,此处是传入了一个 lambda 函数,其作用是告知 sorted 使用键值对元组下标为 1 的元素排序,即使用 value 进行排序。
字典可以使用 for 循环遍历其内容,但要注意,如果使用如下形式,则默认遍历字典的 keys 列表:
score = {"语文": 80, "数学": 95, "英语": 60}for cls in score:print(cls, end=" ")# Output: 语文 数学 英语如果要明确遍历 keys、values 或者键值对,则建议在 in 后面明确使用字典的内置函数以获取准确数据:
# 遍历所有的 keyfor key in dict.keys()pass# 遍历所有的 valuefor value in dict.values()pass# 遍历所有的键值对for key, value in dict.items()pass往期回顾: