2024-09-29 01:32:07 发布
网友
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"]
big_keys({"a":20 ,"b":20 ,"c":10},15)
["a", "b"]
["a"]
最省力的解决方案是将所有合适的k收集到一个列表中并返回该列表:
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.get(k, 0)
k in dicta
dicta
编辑:在dicta.items()上迭代而不是调用dicta[k]当然也是有效的;我不确定其中一个是否比另一个快很多
dicta.items()
dicta[k]
编辑:只需运行一个简单的timeit,而且dicta.items()确实更快
timeit
最省力的解决方案是将所有合适的
k
收集到一个列表中并返回该列表:但是,通过列表理解,您可以更简洁高效地编写:
请注意,不需要
dicta.get(k, 0)
,因为k in dicta
是由我们在dicta
上迭代的事实保证的编辑:在
dicta.items()
上迭代而不是调用dicta[k]
当然也是有效的;我不确定其中一个是否比另一个快很多编辑:只需运行一个简单的
timeit
,而且dicta.items()
确实更快相关问题 更多 >
编程相关推荐