我有两个列表如下:
list_1 = [set(['Amazon', 'Oracle']), set(['SAP'])]
list_2 = [['Amazon', 388], ['Oracle', 35], ['SAP', 82]]
我正在尝试将这些列表组合起来以产生以下输出。
comb_list = [[388, 35], [82]]
基本上,我想用公司名称替换它们各自的数字(它们是股票价格)。我试图将其中一个列表循环到另一个列表中,但它效率不高,我的数据集非常庞大。有没有办法在Python中有效地做到这一点?
感谢。
答案 0 :(得分:3)
d = dict(list_2)
print [[d.get(item, None) for item in setItem] for setItem in list_1]
<强>输出强>
[[35, 388], [82]]
请记住,set
不维持秩序。这就是为什么输出是[35, 388]
而不是预期的[388, 35]
。
答案 1 :(得分:1)
这是另一个更简单的选项,它不使用字典并保留元素的原始顺序:
[[v for k, v in list_2 if k in x] for x in list_1]
=> [[388, 35], [82]]
有人可能会说上述解决方案更像是“Pythonic”,但这是主观的,并且可以讨论。