当前位置: 代码迷 >> python >> 取得与列表中每个元素关联的值
  详细解决方案

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

热度:102   发布时间:2023-07-16 11:26:41.0

我有一个列表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

这是一种方法:

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]

您的状况有误:

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

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

您还可以使用filterlambda来做到这一点:

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

输出:

[1, 6]

您可以将列表理解与元组拆包一起使用:

>>> 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]
  相关解决方案