在Python中有效地组合两个列表的值

时间:2013-12-11 15:33:10

标签: python

我有两个列表如下:

list_1 = [set(['Amazon', 'Oracle']), set(['SAP'])]

list_2 = [['Amazon', 388], ['Oracle', 35], ['SAP', 82]]

我正在尝试将这些列表组合起来以产生以下输出。

comb_list = [[388, 35], [82]]

基本上,我想用公司名称替换​​它们各自的数字(它们是股票价格)。我试图将其中一个列表循环到另一个列表中,但它效率不高,我的数据集非常庞大。有没有办法在Python中有效地做到这一点?

感谢。

2 个答案:

答案 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”,但这是主观的,并且可以讨论。