Python 将多维列表分配给唯一值的最佳方法

Python 将多维列表分配给唯一值的最佳方法,python,list,Python,List,将名称和值列表分配给唯一名称列表的最佳方法是什么?或者有没有一种方法可以从一开始就忽略唯一值的列表 例如: list01 = ['John Doe', 'Jane Doe'] list02 = [['John Doe', 'John Doe', 'Jane Doe', 'John Doe', 'Jane Doe'], [10, 20, 30, 40, 50]] 最终结果应如下所示: list03 = [['John Doe', 'Jane Doe'], [70, 80]] list01 =

将名称和值列表分配给唯一名称列表的最佳方法是什么?或者有没有一种方法可以从一开始就忽略唯一值的列表

例如:

list01 = ['John Doe', 'Jane Doe']
list02 = [['John Doe', 'John Doe', 'Jane Doe', 'John Doe', 'Jane Doe'], [10, 20, 30, 40, 50]]
最终结果应如下所示:

list03 = [['John Doe', 'Jane Doe'], [70, 80]]
list01 = ['John Doe', 'Jane Doe']
list02 = [['John Doe', 'John Doe', 'Jane Doe', 'John Doe', 'Jane Doe'], [10, 20, 30, 40, 50]]

totals = {name: 0 for name in list01}
for i in range(len(list02[0])):
    totals[list02[0][i]] += list02[1][i]

list03 = [list(totals.keys()), list(totals.values())]
list01 = ['John Doe', 'Jane Doe']
list02 = [['John Doe', 'John Doe', 'Jane Doe', 'John Doe', 'Jane Doe'], [10, 20, 30, 40, 50]]

list03 = [list01[:], [sum([x[1] for x in zip(list02[0], list02[1]) if x[0]==y]) for y in list01]]

谢谢你的帮助,祝大家周日愉快

我知道您想要对每个名称的值求和,您可以尝试以下方法:

list03 = [['John Doe', 'Jane Doe'], [70, 80]]
list01 = ['John Doe', 'Jane Doe']
list02 = [['John Doe', 'John Doe', 'Jane Doe', 'John Doe', 'Jane Doe'], [10, 20, 30, 40, 50]]

totals = {name: 0 for name in list01}
for i in range(len(list02[0])):
    totals[list02[0][i]] += list02[1][i]

list03 = [list(totals.keys()), list(totals.values())]
list01 = ['John Doe', 'Jane Doe']
list02 = [['John Doe', 'John Doe', 'Jane Doe', 'John Doe', 'Jane Doe'], [10, 20, 30, 40, 50]]

list03 = [list01[:], [sum([x[1] for x in zip(list02[0], list02[1]) if x[0]==y]) for y in list01]]
或者,您可以尝试使用python的列表理解,可能类似于:

list03 = [['John Doe', 'Jane Doe'], [70, 80]]
list01 = ['John Doe', 'Jane Doe']
list02 = [['John Doe', 'John Doe', 'Jane Doe', 'John Doe', 'Jane Doe'], [10, 20, 30, 40, 50]]

totals = {name: 0 for name in list01}
for i in range(len(list02[0])):
    totals[list02[0][i]] += list02[1][i]

list03 = [list(totals.keys()), list(totals.values())]
list01 = ['John Doe', 'Jane Doe']
list02 = [['John Doe', 'John Doe', 'Jane Doe', 'John Doe', 'Jane Doe'], [10, 20, 30, 40, 50]]

list03 = [list01[:], [sum([x[1] for x in zip(list02[0], list02[1]) if x[0]==y]) for y in list01]]

你的问题不清楚,请详细说明。[70,80]是从哪里来的[70,80]是从哪里来的[70,80]是从哪里来的?当你尝试这样做时,问题是什么?很抱歉,问题不清楚。我在两个列表中循环,并将分配给“list02”中名称的值相加。分配给list02中名称的值之和为150,而不是[70,80]。您为什么期望[70,80]的预期产出。非常感谢!那正是我要找的!