首页 > 解决方案 > 如何从具有特定条件的二维列表中创建新列表?

问题描述

我需要告诉你,我对 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]] 

先感谢您

标签: pythonlist2d

解决方案


使用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']}

推荐阅读