Я пытаюсь добавить значение внутри словаря.

aDict = { "id" :
             {"name": None },
          "id2" :
             {"foo": None}, 
           ...
         }

for k, v in aDict.items():
     temp = [1,2,3,4]
     aDict[k][v] = temp

Тогда я получил ошибку, TypeError: unhashable type: 'dict' Как я могу добавить значение во вложенном словаре?



--- редактировать ---
Мой ожидаемый результат:

aDict = { "id" :
             {"name": [1,2,3,4] },
          "id2" :
             {"foo": [1,2,3,4] }, 
           ...
         }
2
jayko03 30 Апр 2019 в 21:16

3 ответа

Лучший ответ

Когда вы делаете aDict [k], вы уже получили значение dict, а затем назначаете временную температуру определенной клавише dict.

    aDict = { 'id' :
             {'name': None },
             'id2':
             {'foo':None}
            }

for k, v in aDict.items():
    temp = [1,2,3,4]
    for keys in v.keys():
        aDict[k][keys] = temp

Выход

{'id': {'name': [1, 2, 3, 4]}, 'id2': {'foo': [1, 2, 3, 4]}}
2
vb_rises 30 Апр 2019 в 18:31

Вы можете получить все ключи с помощью d.keys (), а затем добавить temp в этот словарь.

aDict = { "id" :
             {"name": None },
          "id2" :
             {"foo": None}, 
          "id3" :
             {"bar": None, "boo": None}, 
         }
temp = [1, 2, 3, 4]

for k, v in aDict.items():
    for newKey in v.keys():
        v[newKey] = temp

Результат:

{'id': {'name': [1, 2, 3, 4]},
 'id2': {'foo': [1, 2, 3, 4]},
 'id3': {'bar': [1, 2, 3, 4], 'boo': [1, 2, 3, 4]}}
1
âńōŋŷXmoůŜ 30 Апр 2019 в 18:36

Попробуй это :

temp = [1,2,3,4]
for k in aDict:
    for j in aDict[k]:
        aDict[k][j]=temp

ВЫВОД :

{'id': {'name': [1, 2, 3, 4]}, 'id2': {'foo': [1, 2, 3, 4]}}
1
Arkistarvh Kltzuonstev 30 Апр 2019 в 18:33