基于另一个列表Python将键值对添加到dicts列表中

时间:2014-01-03 10:20:51

标签: python dictionary

很抱歉,如果标题不清楚,但这是我正在努力实现的目标。

我有一个dicts列表:

l = [{'name': 'inAnalysis'}, {'name': 'inQuest'}, {'name': 'inDevelopment'}]

还有一种像这样的翻译表:

tr = {'inAnalysis' : 1, 'inDevelopment' : 2, 'inQuest' : 3}

我想将密钥值添加到l,如下所示:

l = [{'name': 'inAnalysis', 'order' : 1},
     {'name': 'inQuest', 'order' : 3}, 
     {'name': 'inDevelopment', 'order' : 2}]

如何将l的值与tr的键匹配,并使用键order获取其值并将其添加到l?任何帮助,将不胜感激。我正在使用Python 2.6。

2 个答案:

答案 0 :(得分:6)

您可以使用列表推导来动态生成像这样的词典

print [{"name":dic["name"], "order":tr[dic["name"]]} for dic in l]

<强>输出

[{'name': 'inAnalysis', 'order': 1},
 {'name': 'inQuest', 'order': 3},
 {'name': 'inDevelopment', 'order': 2}]

或者,您可以使用以下

for dic in l: dic["order"] = tr[dic["name"]]

这会就地修改词典。

答案 1 :(得分:1)

如果你想修改现有的词典(请注意,如果你的代码中的其他内容引用了列表中的词典,而不是列表本身,那么theoutoutye的解决方案会产生新的词典,这可能是一个问题。你可以这样做:

for my_dict in l:
    my_dict['order'] = tr[my_dict['name']]