page contents

Python列表嵌套字典,管理多组数据像用Excel一样简单,比C语言省一半代码!

在处理多组“键值对”数据时,比如存储多个学生的信息(每个学生都是一个字典),单独的字典就不够用了。这时候,列表嵌套字典就成了绝佳选择——用列表容纳多个字典,每个字典代表一组完整的键值对数据,既能按顺序管理,又能通过键快速定位信息,像管理一个“数据表格”一样方便。

attachments-2026-03-dyhhJEW269cb268d33ec8.png在处理多组键值对数据时,比如存储多个学生的信息(每个学生都是一个字典),单独的字典就不够用了。这时候,列表嵌套字典就成了绝佳选择——用列表容纳多个字典,每个字典代表一组完整的键值对数据,既能按顺序管理,又能通过键快速定位信息,像管理一个数据表格一样方便。

列表嵌套字典——多组键值对的数据表

Python例子:

# 用列表嵌套字典存储多个学生信息

students = [

   {"id": 1001, "name": "张三", "age": 18, "score": 90},

   {"id": 1002, "name": "李四", "age": 17, "score": 85},

   {"id": 1003, "name": "王五", "age": 18, "score": 92}

]

# 访问数据:先通过列表索引定位到某个学生,再通过键访问信息

print("第二个学生的姓名:", students[1]["name"])  # 李四

print("第三个学生的成绩:", students[2]["score"])  # 92

# 修改数据:修改第一个学生的年龄

students[0]["age"] = 19

print("修改后第一个学生的信息:", students[0])  # {'id': 1001, 'name': '张三', 'age': 19, 'score': 90}

# 新增数据:向列表中添加一个新学生字典

new_student = {"id": 1004, "name": "赵六", "age": 17, "score": 88}

students.append(new_student)

print("新增后的学生列表长度:", len(students))  # 4

# 遍历数据:打印所有学生的姓名和成绩

print("所有学生的姓名和成绩:")

for student in students:

   print(f"{student['name']}{student['score']}")

运行结果:

 

第二个学生的姓名: 李四

第三个学生的成绩: 92

修改后第一个学生的信息: {'id': 1001, 'name': '张三', 'age': 19, 'score': 90}

新增后的学生列表长度: 4

所有学生的姓名和成绩:

张三:90

李四:85

王五:92

赵六:88

详细分析:

1. 结构特点:外层是列表,负责按顺序存储多个数据项(每个学生);内层是字典,负责存储单个数据项的详细信息(键值对)。这种结构兼顾了列表的有序性和字典的键值访问优势,像一张Excel表格——列表是行,字典是列。

2. 访问方式:需要两层定位:列表[索引][]。比如students[1]["name"]students[1]先定位到列表中索引为1的字典(李四的信息),再通过"name"键取出对应的值。

3. 增删改操作:

◦ 新增:用列表.append(新字典)在末尾添加一组数据;用列表.insert(索引, 新字典)在指定位置插入。

◦ 删除:用del 列表[索引]删除整个数据项;用del 列表[索引][]删除某个数据项中的特定键值对。

◦ 修改:直接通过列表[索引][] = 新值修改,比如students[2]["score"] = 95,就把王五的成绩改成了95

4. 筛选与统计:结合循环和条件判断,能快速处理数据。比如找出所有18岁的学生:

 

adults = [s for s in students if s["age"] == 18]

print("18岁的学生:", [s["name"] for s in adults])  # ['王五', '张三'](修改后张三年龄为19,所以只剩王五)

对比C语言:

C语言要实现类似功能,需要用结构体数组嵌套结构体,代码繁琐:

 

#include <stdio.h>

#include <string.h>

// 定义学生结构体(对应Python的字典)

typedef struct {

   int id;

   char name[20];

   int age;

   int score;

} Student;

int main() {

   // 结构体数组(对应Python的列表嵌套字典)

   Student students[3];

   // 手动初始化数据

   students[0].id = 1001;

   strcpy(students[0].name, "张三");

   students[0].age = 18;

   students[0].score = 90;

   // ... 初始化其他学生

   // 访问第二个学生的姓名

   printf("第二个学生的姓名:%s\n", students[1].name);  // 李四

   return 0;

}

主要区别:

5. 灵活性:Python列表嵌套字典可以动态调整长度(增删数据项),C语言结构体数组长度固定,扩容需手动创建新数组并复制数据。

6. 数据类型:Python字典的值可以是不同类型(比如给某个学生加一个"hobby": ["篮球", "编程"]的列表),C语言结构体成员类型固定,无法灵活添加不同类型的字段。

7. 操作便捷性:Python用一行列表推导式就能筛选数据,C语言需要写多层循环和条件判断,代码量是Python的数倍。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1920 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2228 文章
  3. Pack 1920 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章