使用函数在字典上迭代

2024-09-29 01:32:07 发布

您现在位置:Python中文网/ 问答频道 /正文

def big_keys(dicta,x):
    for k in dicta:
        if x < dicta.get(k,0):
            return k

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


Tags: 函数inforgetreturnif字典def
1条回答
网友
1楼 · 发布于 2024-09-29 01:32:07

最省力的解决方案是将所有合适的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()确实更快

相关问题 更多 >