获取与lis中每个元素相关联的值

2022-07-06 12:49:26 发布

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

我有一个列表a,其中id, (x,y), err与目标检测相关。所以每个id与一个err相关联。err的值从0变为5。我要做的是获取与每个id相关联的err,并检查它是否等于0。如果err是0,则将该id附加到列表errorfree_id。我无法从上述代码执行此操作。用字典做这件事会更好吗?任何帮助都将不胜感激

errorfree_id = []
a = [(1,(50,26),0),(6,(18,29),0),(4,(4,18),1)]
for id, (x,y) , err in a:
    if id in err == 0:
        errorfree_id.append(id)
return errorfree_id

Tags: inid目标列表forreturnif字典err代码执行append事会errorfree
3条回答
网友
1楼 ·

有一种方法:

errorfree_id = []

a = [(1,(50,26),0), (6,(18,29),0), (4,(4,18),1)]

for i, j, k in a:
    if k == 0:
        errorfree_id.append(i)

errorfree_id  #  [1, 6]

但是,列表理解可能更容易维护:

errorfree_id = [i for i, _, k in a if k == 0]
网友
2楼 ·

你只是在你的情况下有一个错误:

for id, (x,y) , err in a:
    if err == 0:
        errorfree_id.append(id)

if id in err == 0应该是if err == 0

网友
3楼 ·

您还可以使用filterlambda来执行此操作:

errorfree_id = [i[0] for i in filter(lambda (i,_,l): l==0, a)]

输出:

[1, 6]