首页 > 解决方案 > 将多维列表分配给唯一值的最佳方法

问题描述

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

例如:

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]]

感谢您的帮助,祝大家有个美好的星期天!

标签: pythonlist

解决方案


我知道您想对每个名称的值求和,您可以尝试这样的事情:

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())]

或者,您可以尝试使用 python 的列表理解,可能是这样的:

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]]

推荐阅读