Как добавить следующий dict в массиве - PullRequest
0 голосов
/ 14 мая 2018

Я строю диктат, выбирая значения из устройств.Я хотел бы продолжать добавлять новый dict в "c", добавляя новый элемент.Как добавить новый dict в массив:

dict1 = {
'a': 1,
'b': 2,
'c': [{'aa': 11, 'bb': 22}]}
newvalue = {'aa': 111, 'bb': 222}
dict1['c'] = dict1['c'] + newvalue

End results:
dict1 = {
'a': 1,
'b': 2,
'c': [{'aa': 11, 'bb': 22},{'aa': 111, 'bb': 222}}

Как добавить, используя forloop?

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

А чтобы уточнить превосходящий ответ jpp, он работает в цикле for (код ниже обычно имеет индекс, а не просто «новое значение»).

newvalue = {'aa': 111, 'bb': 222}

dict1 = {
'a': 1,
'b': 2,
'c': [{'aa': 11, 'bb': 22}]}

for i in range(1):
    dict1['c'].append(newvalue)
print(dict1)

Результат:

{'a': 1, 'b': 2, 'c': [{'aa': 11, 'bb': 22}, {'aa': 111, 'bb': 222}]}
0 голосов
/ 14 мая 2018

Хитрость в этом вопросе - понимание типов ваших объектов.

Давайте попробуем найти тип dict1['c'], поскольку мы пытаемся добавить к нему:

print(type(dict1['c']))
<class 'list'>

Пока мы это делаем, давайте посмотрим, что находится внутри этого списка:

print(type(dict1['c'][0]))
<class 'dict'>

Итак, у нас есть список, и первый элемент списка - это словарь.

Похоже, мы хотим добавить еще один словарь в этот список. Но, подождите, тот факт, что мы добавляем словарь , вообще имеет отношение к делу? Вероятно, нет, мы знаем, что list может содержать любое количество объектов.

Итак, давайте посмотрим, как мы можем добавить в список. Быстрый Google дает нам Разница между методами добавления и расширения списка в Python . Итак, нам нужно list.append. Давайте попробуем это:

dict1['c'].append(newvalue)

print(dict1)

{'a': 1,
 'b': 2,
 'c': [{'aa': 11, 'bb': 22},
       {'aa': 111, 'bb': 222}]}

Эй, Престо! Это точно то, что мы искали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...