繁体   English   中英

比较嵌套列表并查找值匹配的索引

[英]Comparing nested list and finding index of value match

我正在寻找基于第一个索引的嵌套列表中的匹配项,并添加匹配的每个列表的浮点数。

假设我有这个嵌套列表:

a = [[1234, 5678, 4.5], [0987, 6543, 6.8], [4321, 5678, 9.8]]

我正在寻找一种方法来查找列表中的第一个索引与“a”中的另一个列表的匹配项,一旦找到匹配项,就将第二个索引的值相加。

我尝试了很多方法来检查匹配,例如嵌套 for 循环、any() 函数以及诸如:

match = []

if a[x][1] in a[0:-1][1]:
   a.pop(x)
   match.append(x)

根据匹配创建一个新列表并以这种方式比较它们,但它似乎永远不会起作用。 如果匹配发生,所有这些方法似乎只返回,而不是与匹配关联的特定索引。

我应该创建一个字典,键是第一个索引,值是第二个索引,然后比较吗? 或者是否有其他方法可以检查匹配项的索引并在循环内进行比较?

正如您在问题末尾所建议的那样,您可以使用字典来做您想做的事情,使用第一个索引值作为键,使用第二个索引作为值。 遍历您的列表列表,将项目存储在字典中。 如果它已经存在,请添加值。

a = [[1234, 5678, 4.5], [987, 6543, 6.8], [4321, 5678, 9.8]]
d = {}
for l in a:
    id = l[1]
    if id not in d:
        d[id] = l[2]
    else:
        d[id] += l[2]
print(*d.items())

输出:

(5678, 14.3) (6543, 6.8)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM