在Python中附加词典

时间:2013-07-14 21:16:47

标签: python dictionary append

我有两个字典来自JSON文件,看起来像这样:

dict1 = {"data": [{"text": "text1", "id": "id1"}, {"text": "text2", "id": "id2"}]}
dict2 = {"data": [{"text": "text3", "id": "id3"}, {"text": "text4", "id": "id4"}]}

我想从中创建以下内容:

dict = {"data": [{"text": "text1", "id": "id1"}, {"text": "text2", "id": "id2"}, {"text": "text3", "id": "id3"}, {"text": "text4", "id": "id4"}]}

我尝试了不同的方法,如:

dict = dict1.update(dict2)

dict = dict1.append(dict2)

两个都错了。我认为问题来自我需要的“数据”部分。真的很感激帮助。感谢。

3 个答案:

答案 0 :(得分:3)

dict={"data": dict1["data"] +dict2["data"]}

答案 1 :(得分:0)

updateappend不对您的结构做出任何假设,因此它们无法正常工作。你必须构建一个新词典:

dict3 = {'data': [dict1['data'] + dict2['data']]}

或修改现有的一个:

dict1['data'].extend(dict2['data'])

答案 2 :(得分:0)

不幸的是,这样做:

dict = dict1.update(dict2)

您实际上替换data”键的值,因此您会收到不同的结果(值未合并)。

试试这个:

from itertools import chain

your_dicts = [dict1, dict2]  # Whatever you need, eg. iterable with many dicts 
result = {"data": list(chain.from_iterable(d['data'] for d in your_dicts))}

这将适用于许多词典,甚至通过它们进行迭代。它不需要您在字典创建过程中明确列出它们。

证明:http://ideone.com/V1HHNR