cache = [['a', 'b'], ['c', 'd']]
val = 'a'
if val in [x for [x,y] in cache]:
print(y)
else:
print('Not found')
在上面的代码中,我希望b
返回作为答案。但是,结果是d
。如何从此表达式中检索匹配的项目?如果我的术语不正确,请原谅我,我刚刚开始学习Python并列出理解。我更喜欢使用这种简写形式,因为我现在还不太熟悉lambda表达式。另一个好奇心,为什么会这样d
?
问题在于表达式[x for [x,y] in cache]
的值与['a','c']
在表达式中查找之前a
一样。因此,a
与之无关b
。
y
包含的值,d
因为它是y
迭代时存储的最后一个值cache
我认为您想要的是这样的:
cache = [['a', 'b'], ['c', 'd']]
val = 'a'
ys = [y for [x,y] in cache if val == x]
if ys:
print(ys[0])
else:
print('Not found')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句