Python: добавление словаря в качестве нового объекта к ключу словаря - PullRequest
0 голосов
/ 06 апреля 2020

Я разрабатываю Django API для заполнения определенных наборов данных в разных разделах / категориях. В каждом разделе / ​​каталоге будет несколько словарей.

Требование:

"data": {
    "engineers": {
        {"id": 1, "name": "aaa"},
        {"id": 2, "name": "bbb"},
        {"id": 3, "name": "ccc"},
    },
    "doctors": {
        {"id": 5, "age": "50"},
        {"id": 6, "age": "60"},
        {"id": 7, "age": "70"},
    },
}

В этом примере мне нужно добавить новые инженерные объекты в узел "инженеры", а новые объекты доктора в " врачи "узел. Метод, который я попробовал, выглядит следующим образом.

data = {}
data["engineers"].append({"id": 4, "name": "ddd"})
data["doctors"].append({"id": 8, "age": "45"})

Ошибка:

Во время обработки вышеупомянутого исключения (объект 'set' не подходит для подписки), возникло другое исключение:

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 06 апреля 2020

Вы добавляете к объекту dict, и это не сработает, поэтому инженеры должны быть объектом списка, а не dict, в первый раз, когда вы определяете его для него с помощью [], а не {}, то же самое с врачами.

data = {
'engineers':[],
'doctors':[]
} 
data["engineers"].append({"id": 4, "name": "ddd"})
0 голосов
/ 06 апреля 2020

Оберните ваши данные, которые вы хотите добавить в массив. Вы не можете добавлять в словарь, но вы можете добавлять объекты в массив.

data = {"Engineers":
    [
        {"id": 1, "name": "Bob"}
    ]
}

data["Engineers"].append({
    "id": 2, "name": "Alice"
})

Это приведет к:

{"Engineers": 
  [
    {"id": 1, "name": "Bob"},
    {"id": 2, "name": "Alice"}
  ]
}
...