[英]For loops and lists
我最近遇到了这个问题:我需要编写一个函数来对字典中的某个值进行反向查找,并返回与该值配对的键列表。
我写了两个版本,第一个版本有效,而另一个版本无效。 但是,我不明白为什么。
def reverse_lookup(d, v):
l = []
for k in d:
if d[k] == v:
l.append(k)
return l
def reverse_lookup(d, v):
l = []
for k in d:
if d[k] == v:
l = l.append(k)
return l
第二个版本无论如何都返回None
。 怎么了 以我的理解,我通过写l = l.append(k)
更新列表,因此我应该能够收到所需的键列表。
append
函数返回None
。 所以,当你说
l = l.append(k)
您正在将None
分配给l
。 在下一个迭代中,您将尝试在None
上调用append
函数。 因此,您将有一个错误。 但是,如果只有一次迭代,则l
现在将None
,并且将返回该值。
顺便说一句,您可以使用理解力来做到这一点,就像这样
return [key for key, value in d.items() if value == v]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.