2011-07-11 51 views
4

好吧,我有一本字典,看起來像這樣如何結合詞典+列表,形成一個有序列表

z = {'J': 50, 'Q': 30, 'F': 10) 

而且看起來像這樣

l = [('J', 20), ('Q', 10), ('F', 2)] 

如何合併這些到一個列表既保存我的原始列表排序字典或列表?我想要的東西看起來像

l = [('J', 20, 50), ('Q', 10, 30), ('F', 2, 10)] 

感謝您的幫助!

回答

6
z = {'J': 50, 'Q': 30, 'F': 10} 
l = [('J', 20), ('Q', 10), ('F', 2)] 
print [(a, b, z[a]) for a, b in l] 

給出:

[('J', 20, 50), ('Q', 10, 30), ('F', 2, 10)] 

最好不要說出你的列表l。從PEP 8

名,以避免

切勿使用字符 'L'(小寫字母EL), 'O'(大寫 信哦),或 'I'(大寫字母眼)單字符變量 名稱。

在某些字體中,這些字符與數字 one和zero沒有區別。當試圖使用'l'時,請使用'L'。

+0

謝謝你,這完美的作品。 –

0

元組的列表,你可以這樣做:

[item + (z[item[0]],) for item in l] 

注意z[item[0]]假設關鍵item[0]總是z存在。

對於一個字典,嘗試

dict((item[0], (item[1], z[item[0]])) for item in l) 
0

提高耶拿的回答允許列表中的一些項目從字典丟失:

>>> l = [('J', 20), ('Q', 10), ('F', 2), ('A', 5)] 
>>> [x + (z.get(x[0]),) for x in l] 
[('J', 20, 50), ('Q', 10, 30), ('F', 2, 10), ('A', 5, None)]