合并字典列表而不覆盖

时间:2018-09-04 22:17:57

标签: python-3.x

我正在尝试合并字典列表,而不会丢失任何数据。

我有:

a = [{'ArticleUrl': 'a', 'Text': 'labor activists negative'},
{'ArticleUrl': 'a', 'Text': 'funds negative'},
{'ArticleUrl': 'b', 'Text': 'Timothy S. Hillman negative'},
{'ArticleUrl': 'b', 'Text': 'AFT negative'},
{'ArticleUrl': 'c', 'Text': 'major outages negative'}]

我想得到的是:

b = [{'ArticleUrl': 'a','Text': 'labor activists negative, funds negative'},
{'ArticleUrl': 'b', 'Text': 'Timothy S. Hillman negative, AFT negative'},
{'ArticleUrl': 'c', 'Text': 'major outages negative'}]

我已经尝试过.update,但是它似乎覆盖了'text'值。任何帮助,将不胜感激!

1 个答案:

答案 0 :(得分:1)

您可以创建另一个字典,在迭代列表时更新它并获取值。

lst = [{'ArticleUrl': 'a', 'Text': 'labor activists negative'},
{'ArticleUrl': 'a', 'Text': 'funds negative'},
{'ArticleUrl': 'b', 'Text': 'Timothy S. Hillman negative'},
{'ArticleUrl': 'b', 'Text': 'AFT negative'},
{'ArticleUrl': 'c', 'Text': 'major outages negative'}]


dict_results = {}

for d in lst:
    k = d['ArticleUrl']
    if k in dict_results:
        dict_results[k] += ", " + d['Text']
    else:
        dict_results[k] = d['Text']

lst = [{'ArticleUrl': k, 'Text': v} for (k,v) in dict_results.items()]
#[{'ArticleUrl': 'a', 'Text': 'labor activists negative, funds negative'}, {'ArticleUrl': 'b', 'Text': 'Timothy S. Hillman negative, AFT negative'}, {'ArticleUrl': 'c', 'Text': 'major outages negative'}]