2013-07-14 175 views
0

我有兩本詞典從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) 

兩者都不對。我認爲問題來自我確實需要的「數據」部分。將非常感激的幫助。謝謝。

+0

的'dict'不知道的值是什麼,所以他怎麼會知道你是想擴展列表? 'update'只是將字典的值替換爲另一個字典中的值,而不執行任何其他操作。 – Bakuriu

回答

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

updateappend不作任何假設你的結構,使之不能正常工作。你必須建立一個新的字典:

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

或修改現有的一個:做這個

dict1['data'].extend(dict2['data']) 
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