获取与列表中的每个元素关联的值

时间:2018-02-11 16:48:49

标签: python list loops

我有一个列表a,其id, (x,y), err与对象检测相关联。因此,每个id都与err相关联。 err的值从0更改为5.我想要做的是将err与每个id相关联,并检查它是否等于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

4 个答案:

答案 0 :(得分:2)

这是一种方式:

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]

答案 1 :(得分:1)

您的情况只是错误:

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

if id in err == 0应为if err == 0

答案 2 :(得分:1)

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

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

输出:

[1, 6]

答案 3 :(得分:1)

你可以使用列表解析和元组解包:

>>> a = [(1,(50,26),0),(6,(18,29),0),(4,(4,18),1)]
>>> [id for id,(x,y),err in a if err==0]
[1, 6]