从list/tup列表中获取值

2024-10-03 04:27:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图根据列表中的第三个值来获取每个列表的第一个值—如果是-3,则取该列表的第一个值。你知道吗

列表的初始列表如下所示:

 [['GRRSCLOE1', <DstTzInfo 'America/Santiago' LMT-1 day, 19:17:00 STD>, -3.0, 'RR'], ['GRTFRAIX1', <DstTzInfo 'Europe/Berlin' LMT+0:53:00 STD>, 1.0, 'P'], ['GRAMDZGP1', <DstTzInfo 'America/Argentina/Mendoza' LMT-1 day, 19:25:00 STD>, -3.0, 'P+PE'], ['GRASAOTB2', <DstTzInfo 'America/Sao_Paulo' LMT-1 day, 20:54:00 STD>, -3.0, 'PE'], ['GRTVAPEM4', <DstTzInfo 'America/Santiago' LMT-1 day, 19:17:00 STD>, -3.0, 'P']

这是期望的结果:

['GRRSCLOE1','GRAMDZGP1','GRASAOTB2','GRTVAPEM4']

Tags: 列表rrstdpedayeuropeamericalmt
3条回答
[i[0] for i in given_list if i[2] == -3]

这也许对你有帮助

试试这个:

l = [['GRRSCLOE1', <DstTzInfo 'America/Santiago' LMT-1 day, 19:17:00 STD>, -3.0, 'RR'], ['GRTFRAIX1', <DstTzInfo 'Europe/Berlin' LMT+0:53:00 STD>, 1.0, 'P'], ['GRAMDZGP1', <DstTzInfo 'America/Argentina/Mendoza' LMT-1 day, 19:25:00 STD>, -3.0, 'P+PE'], ['GRASAOTB2', <DstTzInfo 'America/Sao_Paulo' LMT-1 day, 20:54:00 STD>, -3.0, 'PE'], ['GRTVAPEM4', <DstTzInfo 'America/Santiago' LMT-1 day, 19:17:00 STD>, -3.0, 'P']]
new_list = [i[0] for i in l if int(i[2])==-3]

代码

l = [['GRRSCLOE1', "<DstTzInfo 'America/Santiago' LMT-1 day, 19:17:00 STD>", -3.0, 'RR'], ['GRTFRAIX1', "<DstTzInfo 'Europe/Berlin' LMT+0:53:00 STD>", 1.0, 'P'], ['GRAMDZGP1', "<DstTzInfo 'America/Argentina/Mendoza' LMT-1 day, 19:25:00 STD>", -3.0, 'P+PE'], ['GRASAOTB2', "<DstTzInfo 'America/Sao_Paulo' LMT-1 day, 20:54:00 STD>", -3.0, 'PE'], ['GRTVAPEM4',"<DstTzInfo 'America/Santiago' LMT-1 day, 19:17:00 STD>", -3.0, 'P']]
print([a[0] for a in l if float(a[2])==-3.0])

输出

['GRRSCLOE1', 'GRAMDZGP1', 'GRASAOTB2', 'GRTVAPEM4']

解释:

首先,初始列表字符串应该用双引号或单引号括起来,如果字符串中有单引号并且不想转义,请使用双引号。你知道吗

那么你要找的是列表理解:

  • 构造[ <operation on a> for a in list if <condition on a>]将允许您返回一个包含初始列表中满足条件的所有元素x的列表
  • 这将返回示例的所有嵌套列表,因为您只感兴趣的是第一个元素将<operation on a>替换为a[0]

相关问题 更多 >