Как объединить список и словарь в Python? - PullRequest
0 голосов
/ 12 мая 2018

1) Как мы можем объединить dict со списком и вернуть результат в виде JSON?Попытался объединить list_1 (dict) и list_2 (list), но получил ошибку.Кроме того, после преобразования их в строки можно объединить, но не удалось декодировать обратно в формат JSON (как ожидается, результат ниже).

2) Кроме того, как заменить значение в JSON и сохранить его как JSON?

list_1 = [{'title': 'NEWBOOK', 'downloads': '4', 'views': '88'}]

list_2 = {'title': 'MASTERMIND', 'downloads': '16', 'views': '156'}

list_3 = {
       'a': 'b',
       'c': 'd',
       'e': [{
         'f': 'g',
         'l': 'm'
         }]
       }

Скрипт, который я пробовал, как показано ниже.

combine = list_1 +  list_2



for z in list_3['e']:

list_3 = list_3.replace(z, combine)

Expected_json = json.dumps(list_3)

print(list_3)

Ошибка1:

combine = list_1 +  list_2

TypeError: можно только объединить список (не "dict") в список

Error2:

list_3 = list_3.replace(z, combine)

AttributeError: объект 'dict' не имеет атрибута'replace'

Ожидаемый результат:

list_3 = {
    "a": "b",
    "c": "d",
    "e": [{
            "f": "g",
            "l": "m"
        },
        {
            "title": "NEWBOOK",
            "downloads": "4",
            "views": "88"
        },
        {
            "title": "MASTERMIND",
            "downloads": "16",
            "views": "156"
        }
    ]
}

Ответы [ 2 ]

0 голосов
/ 12 мая 2018
import json    
list_1 = [{'title': 'NEWBOOK', 'downloads': '4', 'views': '88'}]

list_2 = {'title': 'MASTERMIND', 'downloads': '16', 'views': '156'}

list_3 = {
       'a': 'b',
       'c': 'd',
       'e': [{
         'f': 'g',
         'l': 'm'
         }]
       }


list_3['e'].append(list_1[0])

list_3['e'].append(list_2)
json_list = json.dumps(list_3)

если вы хотите добавить больше списков в место, вы делаете следующее

b= json.loads(json_list)
b['e'].append(your_new_dict)
json_list = json.dumps(b)

если вы не знаете, что такое list_1 и list_2, вы можете проверить тип класса и добавить их соответствующим образом. Нравится

if(type(list_1)==list):
    list_3['e'].append(list_1[0])
if(type(list_2)==dict):
    list_3['e'].append(list_2)

если вы не знаете, в какой момент списка_3 вы хотите добавить список. Вы делаете что-то вроде следующего. Предполагая, что в списке list_3

есть только один список
for x in list_3.values():
    if(type(x)==list):
        x.append(list_1[0])
        x.append(list_2)
0 голосов
/ 12 мая 2018

Просто добавьте в список в словаре

list_3['e'].append(list_2)
list_3['e'].append(list_1[0])
print(list_3)

{
    'a':
    'b',
    'c':
    'd',
    'e': [{
        'f': 'g',
        'l': 'm'
    }, {
        'title': 'MASTERMIND',
        'downloads': '16',
        'views': '156'
    }, {
        'title': 'NEWBOOK',
        'downloads': '4',
        'views': '88'
    }]
}
...