Ваша функция завершает выполнение, когда достигает первого оператора return
.
Вы можете настроить свою функцию следующим образом.
def total(diction):
result = []
for key, value in diction.items():
if value <= 20:
result.append(key)
return result
Эта функция добавляет ключи, удовлетворяющие вашему критерию, в список и возвращает этот список только после просмотра всех пар (ключ, значение) в dict
.
Также вы можете написать функцию генератора:
def total_gen(diction):
for key, value in diction.items():
if value <= 20:
yield key
Вы могли бы рассмотреть возможность присвоения функциям лучшего имени, чем total
, и попросить их принять дополнительный параметр (например, с именем limit
), чтобы избежать жесткого кодирования значения 20
.
Демо-версия:
>>> d = {'a': 5, 'b': 100, 'c': 23, 'd': -2}
>>> total(d)
>>> ['d', 'a']
>>> list(total_gen(d))
>>> ['d', 'a']
Конечно, вы также можете использовать сжатый список или выражения генератора:
>>> [key for key, value in d.items() if value <= 20]
>>> ['d', 'a']
>>>
>>> for k in (key for key, value in d.items() if value <= 20):
...: print(k)
...:
d
a
Функция генератора и выражение генератора особенно полезны в случаях, когда вам не нужны все ключи в памяти одновременно - например, если вы просто хотите перебрать их.