У меня есть словарь (dict_) со списками целых чисел в качестве значений. Я хочу выполнить операцию в этом списке и сохранить результат как новый словарь.
Ниже я выполняю операцию над этим списком, добавляя 2, если элементы больше 5. Для этого я использую вложенный цикл for. Как мне добиться того же, используя понимание словаря?
dict_ = {'a':[5, 8, 7],
'b':[4, 7, 2],
'c':[2, 2, 4]}
print(dict_)
#Output: {'a': [5, 8, 7], 'b': [4, 7, 2], 'c': [2, 2, 4]}
dict_new = {}
for k, v in dict_.items():
list_temp=[]
for e in v:
if e > 5:
ne=e + 2
list_temp.append(ne)
else:
list_temp.append(e)
dict_new[k] = list_temp
print(dict_new)
# Output: {'a': [5, 8, 7], 'b': [4, 7, 2], 'c': [2, 2, 4]}






это может быть ваше понимание dict:
{k: [i if i <= 5 else i + 2 for item in v] for k, v in dict_.items()}
обратите внимание, что вам также нужно понимание списка для значений.
отметив, что False в основном 0, а True есть 1, вы можете упростить (но, может быть, сделать его более неясным?) понимание списка:
{k: [i + 2 * (i > 5) for i in v] for k, v in dict_.items()}
Вы можете сделать это, но, поскольку вы работаете как с словарями, так и со списками, вам также нужно будет использовать понимание списка.
my_dict = {'a':[5, 8, 7],
'b':[4, 7, 2],
'c':[2, 2, 4]}
d = {key: [x if x <= 5 else x + 2 for x in value] for key, value in my_dict.items()}
Это должно решить вышеуказанную проблему и вернуть:
{'a': [5, 10, 9], 'b': [4, 9, 2], 'c': [2, 2, 4]}
for k, v in dict_.items():
dict_new[k] = [e + 2 if e > 5 else e for e in v ]
... хотя это не понимание словаря, как хотел ОП.
Да, немного более неясно :) Но я понял :) Спасибо!