You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字符串比较:为何列表推导式在元组列表中未达预期?

问题与解决:从元组列表匹配取值

我需要从元组列表中,依据元组内的某个值匹配后获取目标字符串。

最初的错误代码

使用列表推导式尝试实现:

zone = [x for x in zoneList if (x[2] == usageRow[2])][1]

数据示例

zoneList = [('BOB', 'HIGH_ZONE', 'WI'), ('MIKE', 'LOW_ZONE', 'IL'),....]
usageRow[2] = 'WI'

对比:可用的循环代码

同样逻辑用普通循环却能正常得到结果:

for x in zoneList:
  if (x[2] == usageRow[2]):
     zone = x[1] 

我无法理解两种写法的结果差异,原本预期列表推导式能返回正确值。

问题修正

感谢Brian61354270指出问题所在:原列表推导式存在两个问题:

  1. 用[1]取匹配结果的第二个元素,但匹配WI的元组是结果列表里的第一个元素,应该用[0];
  2. 没有提取元组里的目标字段x[1]。

修正后的正确代码:

zone = [x for x in zoneList if (x[2] == usageRow[2])][0][1]

内容的提问来源于stack exchange,提问作者Donald Deutscher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:33:11