Напишите lambda выражение для преобразования элементов словаря.
Все ключи словаря, следует записать в нижнем регистре, удалив цифры, пробелы и знаки препинания.
А все значения, являющиеся итерируемыми, суммировать.
Примечание
В решении не должно быть ничего, кроме выражения.
Пример
Ввод
print(dict(map(
<ваше выражение>,
{'First 1': 2, 'second:': (2, 1, 1), 'THIRD': [1, 2, 3]}.items()
)))Вывод
{'first': 2, 'second': 4, 'third': 6}Решение
Проходим по всем парам ключ–значение исходного словаря.
Ключ приводим к нижнему регистру и удаляем все символы, кроме букв при помощи isalpha().
Проверяем тип значения. Если оно итерируемое и при этом не строка и не словарь, то суммируем значения. В противном случае, оставляем как есть.
Фактически нас просят завернуть в лямбда функцию следующий код:
Python
def transform_item(kv):
key, value = kv
new_key = ''.join(c for c in key.lower() if c.isalpha())
if hasattr(value, '__iter__') and not isinstance(value, (str, dict)):
new_value = sum(value)
else:
new_value = value
return new_key, new_value
Посмотреть код
Решение
Python
lambda kv: (''.join(c for c in kv[0].lower() if c.isalpha()),
sum(kv[1]) if hasattr(kv[1], '__iter__') and not isinstance(kv[1], (str, dict)) else kv[1])