2016-01-13 31 views
0

多個JSON我有一個包含多個JSON字符串這樣如何合併在python

a = [{"name": "Alex"},{"Age": 25},{"Address": "16, Mount View"}] 

我想這些合併到這樣

a = [{"name": "Alex","Age": 25,"Address": "16, Mount View"}] 

單個陣列我已經嘗試了列表使用jsonmerge,但沒有運氣,使用head' and基準值時工作正常。

有人能幫我一個這個。

我也通過堆棧一個類似的問題了,但它顯示了合併單獨JSON,但在列表不是JSON How to merge two json

+0

的[我如何合併類型的字典列表到一個單一的字典?(可能的複製http://stackoverflow.com/questions/3494906/how-do-i-merge-a- list-of-dicts-into-a-single-dict) – taleinat

+0

這與JSON沒有任何關係,因爲在這一點上,您只需擁有一個Python字典對象列表。關於如何將一系列詞典合併在一起已經有很多答案,例如[這個SO問題的答案](http://stackoverflow.com/questions/3494906/how-do-i-merge-a-list-of-dicts-into-a-single-dict)。 – taleinat

回答

2

首先,這些蟒蛇類型的字典

[{"name": "Alex"},{"Age": 25},{"Address": "16, Mount View"}] 

你可以調用JSON。轉儲它們並將它們變成「json字符串」。

2,你可以使用字典更新方法

a = [{"name": "Alex"},{"Age": 25},{"Address": "16, Mount View"}] 
d = {} 
for small_dict in a: 
    d.update(small_dict) 
print(d) # Yay! 
a = [d] 

被警告!如果您有重複的鑰匙,他們將覆蓋互相

還採取「ChainMap」一看

https://docs.python.org/3/library/collections.html#collections.ChainMap

+0

有沒有辦法取代重複鍵? –

+0

使用反向列表會給你 - a [:: - 1](它只是從末尾開始替換開始:)) –

+0

如何使用反向列表,我應該使用它作爲'for small_dict in -a: ' –

1

爲了增加@yoav glazner的答案,如果你是Python的3.3+,你可以使用ChainMap

>>> from collections import ChainMap 
>>> a = [{"name": "Alex"},{"Age": 25},{"Address": "16, Mount View"}] 
>>> dict(ChainMap(*a)) 
{'name': 'Alex', 'Age': 25, 'Address': '16, Mount View'} 

查看更多關於ChainMap使用案例在這裏: