如何组合字典+列表以形成一个排序列表

时间:2011-07-11 19:17:56

标签: python list sorting dictionary

好的,我有一本看起来像这样的字典

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

一个看起来像这样的列表

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

如何在保持原始列表排序的同时将这些组合成字典或列表?我想要一些看起来像

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

感谢您的帮助!

3 个答案:

答案 0 :(得分: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'(大写字母   字母哦),或'我'(大写字母眼睛)作为单个字符变量   名。

     

在某些字体中,这些字符与数字无法区分   一,零。当试图使用'l'时,请使用'L'。

答案 1 :(得分: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)

答案 2 :(得分:0)

改善jena的答案,允许列表中缺少某些项目:

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