2013-12-11 55 views
1

结合两个列表的值我有两个列表如下:有效地在Python

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

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

我想这些列表相结合,产生了以下的输出。

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

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

谢谢。

+3

你想要字典。 –

回答

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]

+0

谢谢...我从来不知道字典类型...似乎是最好的方式去...在这种情况下,订单实际上并不重要...再次感谢.. – visakh

+0

@ user295338你是欢迎:) – thefourtheye

1

这是另一个,不使用字典简单的选择和保留要素的原有顺序:

[[v for k, v in list_2 if k in x] for x in list_1] 
=> [[388, 35], [82]] 

有人可能会争辩说,上述方案是更“Python化”,但这是主观和开放讨论。