def big_keys(dicta,x):
for k in dicta:
if x < dicta.get(k,0):
return k
对于这个函数,我希望它输入 dicta,它是一个字典,x 是 int。它应该返回所有值大于 x 的 k。然而,它只返回 k 中的一个,而不是全部。
例如 big_keys({"a":20 ,"b":20 ,"c":10},15)
→ ["a", "b"]
但我的输出是["a"]
答案 0 :(得分:1)
最简单的解决方案是在列表中收集所有合适的 k
并返回该列表:
def big_keys(dicta,x):
results = []
for k in dicta:
if x < dicta.get(k,0):
results.append(k)
但是,您可以使用列表推导式将其编写得更紧凑、更高效:
def big_keys(dicta, x):
return [k for k in dicta if x < dicta[k]]
请注意,不需要 dicta.get(k, 0)
,因为 k in dicta
由我们迭代 dicta
的事实保证。
编辑:迭代 dicta.items()
而不是调用 dicta[k]
当然也是有效的;我不确定一个是否比另一个快得多……
编辑:只需运行一个简单的 timeit
,dicta.items()
确实更快