2016-01-13 3 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 base`.

Может кто-то дать мне руку в этом.

Я также прошел через подобный вопрос в стеке, но это показывает слияние для отдельного JSON, но не JSon в списке How to merge two json

+0

Возможный дубликат [Как объединить список dicts в единый Dict?] (Http://stackoverflow.com/questions/3494906/how-do-i-merge-a- list-of-dicts-in-a-single-dict) – taleinat

+0

Это не имеет ничего общего с JSON, так как на данный момент у вас просто есть список объектов словаря Python. Уже есть много ответов о том, как объединить список dicts вместе, например. [ответы на этот вопрос SO] (http://stackoverflow.com/questions/3494906/how-do-i-merge-a-list-of-dicts-into-a-single-dict). – taleinat

ответ

2

Во-первых, это питон dicts

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

вы можете назвать JSON. сбрасывает их и превращает их в «json strings».

второй, вы можете использовать метод обновления Dict

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

, используя обратный список, даст вам это - [:: - 1] (его просто заменяют с конца на начало :)) –

+0

как использовать обратный список, следует ли использовать его как 'для small_dict в -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 использования здесь:

Смежные вопросы