合并python词典列表

时间:2016-10-11 18:42:27

标签: python python-2.7

原始python词典列表:

    [
     {"keyword": "nike", "country":"usa"},
     {"keyword": "nike", "country":"can"},
     {"keyword": "newBalance", "country":"usa"},
     {"keyword": "newBalance", "country":"can"}
    ]

我想整合python dict列表并获得如下输出:

    [
     {"keyword": "nike", "country":["usa","can"]},
     {"keyword": "newBalance", "country":["usa","can"]}
    ]

最有效的方法是什么?

2 个答案:

答案 0 :(得分:0)

以下是一些通用指针。我不会为你编写整个代码。如果您发布了更多您尝试过的内容以及需要帮助的特定代码,我们很乐意提供更多帮助。

看起来您只是将那些具有相同价值的"关键字"键。因此,循环该键的值并根据它组合它们。

如果您按照上面的方式拆分它们,要结合一堆词典,您首先需要创建一个新的词典,其中" country"映射到空列表。然后在考虑每个字典时,检查它的值是否为#34; country"已经在该列表中。如果不是,append它。

答案 1 :(得分:-2)

L = [
     {"keyword": "nike", "country":"usa"},
     {"keyword": "nike", "country":"can"},
     {"keyword": "newBalance", "country":"usa"},
     {"keyword": "newBalance", "country":"can"}
    ]


def consolidate(L):
    answer = {}
    for d in L:
        if d['keyword'] not in answer:
            answer['keyword'] = set()
        answer['keyword'].add(d['country'])

    retval = []
    for k,countries in answer.items():
        retval.append({'keyword':d['keyword'], 'country':list(countries)})
    return retval