От вложенного цикла for к пониманию словаря?

У меня есть словарь (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]}
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
34
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

это может быть ваше понимание 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()}

Да, немного более неясно :) Но я понял :) Спасибо!

Henrik 12.05.2022 14:14

Вы можете сделать это, но, поскольку вы работаете как с словарями, так и со списками, вам также нужно будет использовать понимание списка.

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 ]

... хотя это не понимание словаря, как хотел ОП.

hiro protagonist 12.05.2022 14:18

Другие вопросы по теме