Как получить и изменить значение вложенного словаря? - PullRequest
0 голосов
/ 09 мая 2018

У меня есть такой словарь в python:

x = {'test': {1: 2, 2: 4, 3: 5},
     'this': {1: 2, 2: 3, 7: 6},
     'is': {1: 2},
     'something': {90: 2,92:3}}

Я хочу изменить все значение в ключе на любое значение, которое я хочу. Скажем, 100, методы, которые я попробовал ниже:

counter = 1
print(x)
for key,anotherKey in x.items():
    while counter not in x[key]:
        counter+=1
    while counter in x[key]:
        x[key][counter] = 100
        counter+=1
    counter =0

Который получил результат ниже:

{'test': {1: 100, 2: 100, 3: 100},
 'this': {1: 100, 2: 100, 7: 6},
 'is': {1: 100},
 'something': {90: 100,92: 3}}

Я знаю, почему это происходит, потому что цикл не учитывает, если различия больше 1, что в данном случае в 'this': где различия от 2 до 7 больше 1. Однако я не знать, как это решить.

Ответы [ 2 ]

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

Вы можете использовать словарное понимание следующим образом:

{a: {b:100 for b in d} for (a,d) in x.items()}

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

Вы можете выполнять итерацию через вложенный цикл for:

x = {'test': {1: 2, 2: 4, 3: 5},
     'this': {1: 2, 2: 3, 7: 6},
     'is': {1: 2},
     'something': {90: 2,92:3}}

for a in x:
    for b in x[a]:
         x[a][b] = 100

print(x)

{'is': {1: 100},
 'something': {90: 100, 92: 100},
 'test': {1: 100, 2: 100, 3: 100},
 'this': {1: 100, 2: 100, 7: 100}}

Или для нового словаря вы можете использовать словарное понимание:

res = {a: {b: 100 for b in x[a]} for a in x}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...