使用函数遍历字典

时间:2021-04-09 08:32:54

标签: python dictionary

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"]

1 个答案:

答案 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] 当然也是有效的;我不确定一个是否比另一个快得多……

编辑:只需运行一个简单的 timeitdicta.items() 确实更快