python - 如何从具有特定条件的二维列表中创建新列表?
问题描述
我需要告诉你,我对 python(以及一般编程)非常了解,所以如果可能的话,我想要一个解释性的答案。所以我有一个练习,我有一个这样的列表:
data_list = [["John", "Physics", 5],["John", "Mathematics", 7],["John", "Ancient Greek", 8],["Maria", "Physics", 6],["Maria", "Programming", 10]]
我想创建一个新列表,其中每一行都包含学生的姓名,以及他/她拥有的所有科目的名称。它看起来像这样:
[[John,Physics,Mathematics,Ancient Greek],[Maria,Physics,Programming]]
先感谢您
解决方案
使用Setdefault()
d={}
for x,y,z in data_list:
d.setdefault(x,[]).append(y)
print(d)
使用 setdefault() 和字典理解。
new_dict = {d.setdefault(x,[]).append(y) for x,y,z in data_list}
print(d)
输出:
{'John': ['Physics', 'Mathematics', 'Ancient Greek'], 'Maria': ['Physics', 'Programming']}
推荐阅读
- python - 在有序字典列表中搜索列表
- javascript - React 应用程序可以在 Yandex 浏览器中运行吗?
- node.js - 重新加载页面后如何保存闪存消息并重置?
- c# - SQLConnection 不是 VS 2019 中 System.Data.SqlClient 的一部分?
- r - 如何根据帐户和周间隔计算金额的标准差?
- sql - 自引用表 SQL 从包含的元素中选择最后一个元素
- excel - VBA,如果文件名> 1,则附加 Pdfs
- c++ - C++ 不能循环指向向量的向量的指针
- c# - 在 C# 中使用带有 Linq 的 Include() 执行左连接
- flutter - 使用 Flutter 和 Provider 实现 Firebase Auth