Python 使用函数在字典上迭代 def大键(dicta,x): 对于格言中的k: 如果x
对于这个函数,我希望它输入dicta,dicta是一个字典,x是int,它应该返回所有的k值大于x。但是,它只返回其中一个k,而不是所有k。 e、 gPython 使用函数在字典上迭代 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
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]]