繁体   English   中英

对于循环和列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM