Weyu‘s blog

  • 字典列表详解
  • 如何区分与识别
  • 各结构特色总结
  • 首页
  • 代码
  • 作品
  • 学习
  • 折腾
  • 随笔
  • 关于博主
  • 时光映像
  • 我的网盘
  • 文章归档
  • 友情链接

Python 四种主要数据结构对比

  • admin
  • 2025-12-05
  • 0
类型表示可变性有序性元素要求典型用途
列表[1, 2, 3]✅ 可变✅ 有序任意类型存储有序数据集合
字典{'a': 1}✅ 可变✅ 有序(3.7+)键值对键值映射关系
元组(1, 2, 3)❌ 不可变✅ 有序任意类型固定数据集合
集合{1, 2, 3}✅ 可变❌ 无序唯一且不可变去重、成员测试

字典列表详解

定义:字典列表 = 列表 + 字典元素。它是列表,但每个元素都是字典。

格式示例:

# 字典列表:列表中每个元素都是字典
users = [
    {'name': 'Alice', 'age': 25, 'city': 'Beijing'},
    {'name': 'Bob', 'age': 30, 'city': 'Shanghai'},
    {'name': 'Charlie', 'age': 35, 'city': 'Guangzhou'}
]

特性与操作:

# 1. 访问元素(先列表索引,再字典键)
first_user = users[0]          # 获取第一个字典
user_name = users[0]['name']   # 获取第一个用户的姓名

# 2. 修改元素
users[1]['age'] = 31          # 修改Bob的年龄
users.append({'name': 'David', 'age': 28})  # 添加新用户

# 3. 遍历
for user in users:
    print(f"{user['name']} - {user['age']}岁")

# 4. 按字典字段排序(您刚才用的)
sorted_users = sorted(users, key=lambda x: x['age'], reverse=True)

如何区分与识别

识别方法:

data1 = [1, 2, 3]                     # 列表:元素是数字
data2 = {'a': 1, 'b': 2}              # 字典:键值对
data3 = [{'a': 1}, {'b': 2}]          # 字典列表:列表,元素是字典
data4 = ('a', 'b', 'c')               # 元组:圆括号,不可变
data5 = {1, 2, 3, 3}                  # 集合:花括号,自动去重,无序

实际用例对比:

# 场景:存储用户信息

# ❌ 只用列表(信息混乱)
users_list = ['Alice', 25, 'Bob', 30]  # 难以维护

# ✅ 只用字典(单个用户)
user_dict = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}

# ✅✅ 字典列表(多个用户的最佳选择)
users_dict_list = [
    {'name': 'Alice', 'age': 25},
    {'name': 'Bob', 'age': 30}
]

# ❌ 元组列表(不灵活)
users_tuple_list = [('Alice', 25), ('Bob', 30)]
# 访问:users_tuple_list[0][0] 不如 users[0]['name'] 清晰

# ✅ 集合用于去重
unique_cities = {user['city'] for user in users_dict_list}

各结构特色总结

  1. 列表:[],有序序列,可重复,最通用
  2. 字典:{},键值映射,快速查找
  3. 元组:(),不可变,保护数据,作为字典键
  4. 集合:{},唯一元素,集合运算(交集、并集)
  5. 字典列表:列表的灵活 + 字典的结构化,完美存储同构记录数据

实用建议:处理JSON API数据时,90%的情况会得到字典列表,因为它天然对应"记录集合"的概念。

© 2025 Weyu‘s blog
  • {{ item.name }}
  • {{ item.name }}