Python 使用函数在字典上迭代 def大键(dicta,x): 对于格言中的k: 如果x

Python 使用函数在字典上迭代 def大键(dicta,x): 对于格言中的k: 如果x,python,dictionary,Python,Dictionary,对于这个函数,我希望它输入dicta,dicta是一个字典,x是int,它应该返回所有的k值大于x。但是,它只返回其中一个k,而不是所有k。 e、 gbig_键({a:20,b:20,c:10},15)→ [“a”,“b”] 但是我的输出是[“a”]最简单的解决方案是将所有合适的k收集到一个列表中并返回该列表: def big_keys(dicta,x): for k in dicta: if x < dicta.get(k,0): retu

对于这个函数,我希望它输入dicta,dicta是一个字典,x是int,它应该返回所有的k值大于x。但是,它只返回其中一个k,而不是所有k。 e、 g
big_键({a:20,b:20,c:10},15)
→ <代码>[“a”,“b”]

但是我的输出是
[“a”]

最简单的解决方案是将所有合适的
k
收集到一个列表中并返回该列表:

def big_keys(dicta,x):
    for k in dicta:
        if x < dicta.get(k,0):
            return k
def大键(dicta,x):
结果=[]
对于格言中的k:
如果x
但是,通过列表理解,您可以更简洁高效地编写:

def big_keys(dicta,x):
    results = []
    for k in dicta:
        if x < dicta.get(k,0):
            results.append(k)
def大键(dicta,x):
如果x
请注意,不需要使用
dicta.get(k,0)
,因为我们在
dicta上迭代
这一事实保证了dicta中的
k

编辑:迭代
dicta.items()
而不是调用
dicta[k]
当然也是有效的;我不确定其中一个是否比另一个快很多


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

如果你想返回一个列表,那么你必须在某个地方创建一个列表并附加到它,最后返回列表…FWIW:
[k代表k,v代表dicta.items(),如果v>x]
def big_keys(dicta, x):
    return [k for k in dicta if x < dicta[k]]