Напишите lambda выражение для фильтрации элементов словаря. Вам следует оставить только те элементы, в которых значением являются списки содержащие хотя бы одно чётное число.
Примечание
В решении не должно быть ничего, кроме выражения.
Пример
Ввод
print(dict(filter(
<ваше выражение>,
{'first': 2, 'second': '2 + 2 = 4', 'third': [1, 2, 3]}.items()
)))Вывод
{'third': [1, 2, 3]}Ввод
print(dict(filter(
<ваше выражение>,
{'first': [7, 2, '1'], 'second': (45, 2, 14), 'third': [98]}.items()
)))Вывод
{'first': [7, 2, '1'], 'third': [98]}Решение
Получив паку ключ/значение, убеждаемся, что значение — список, если да, начинаем перебирать элементы списка.
Для каждого элемента сначала проверяем, что оно является целым числом и если это так, то проверяем его четность. Если оно четное — возвращаем True.
Если дошли до конца списка и подхоящий элемент не найден, возвращаем False.
Фактически нас просят завернуть в лямбда функцию следующий код:
Python
def is_list_with_even(kv):
value = kv[1]
if not isinstance(value, list):
return False
for x in value:
if isinstance(x, int) and x % 2 == 0:
return True
return False
Посмотреть код
Решение
Python
lambda kv: isinstance(kv[1], list) and any(isinstance(x, int) and x % 2 == 0 for x in kv[1])