Diction 是一个包含键和值的字典。我想遍历字典键,我将在其中返回一组值小于或等于 20 的键。但是,我只遍历一个键。如何遍历整个字典键?
def total(diction):
for key in diction:
if diction[key] <= 20:
return [key]
您的函数在遇到第一个 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
生成器函数和生成器表达式在您不需要一次将所有键存储在内存中的情况下特别有用 - 例如,如果您只想迭代它们。
我是一名优秀的程序员,十分优秀!