| 类型 | 表示 | 可变性 | 有序性 | 元素要求 | 典型用途 |
|---|---|---|---|---|---|
| 列表 | [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}
各结构特色总结
- 列表:
[],有序序列,可重复,最通用 - 字典:
{},键值映射,快速查找 - 元组:
(),不可变,保护数据,作为字典键 - 集合:
{},唯一元素,集合运算(交集、并集) - 字典列表:列表的灵活 + 字典的结构化,完美存储同构记录数据
实用建议:处理JSON API数据时,90%的情况会得到字典列表,因为它天然对应"记录集合"的概念。