比较元组列表的实体,找到该对并从另一个元组列表中输出它们的ID(如果它们不相同)

时间:2016-06-15 09:40:30

标签: python list tuples

我有两个元组列表如下:

a= [(0.37239153400387603, 0.17091178239454413, 
     0.41009763328456317, 0.7121861651366165), 
    (0.4654894175048452, 0.21363972799318015, 
     0.17091178239454413, 0.37239153400387603, 
     0.7121861651366165)]

b= [(199, 200, 201, 202), 
    (79, 80,200, 199,788)]

第一个列表a具有浮点数,第二个列表具有整数,这些整数基本上是列表a的元组元素的ID。元组的大小可以变化,并不总是4或5。

每个列表中的相应元组具有相同的大小。

问题是将列表a中的元组实体与列表a的元组中的其他实体进行比较,并检查它们是否相等。可以有多个元组,数百个元组。每个元组都必须与其他元组进行比较,并且可以预期多个成对ID实例,如果ID是唯一的,则需要输出所有元组!

如果它们相等并且它们的ID不相同,那么需要从列表b中的元组输出这对ID。可能会有多次出现的情侣,所有情况都需要输出而不是第一次出现。唯一的条件是ID的唯一性

输出:

The lengths of ID 199 and 200 are same in both tuples but we do not output them. 
However, 202 and 788 are output because they have the same length but different IDs.

我用过的东西:

res = []

for i in xrange(len(a) - 1):
 for j in xrange(i + 1, len(a)):
  if len(a[i] & a[j]) >= 2:
   res.append([index, i, j])
   index += 1
print res

但是得到一些与操作数相关的错误对于元组来说是不可用的! Anz建议? 问候

1 个答案:

答案 0 :(得分:1)

如果我理解正确你需要的是将相应的“ID”连接到浮点,那么你需要的就是:

concatenatedList = [ (a[i][j], b[i][j]) for i in range(len(a)) for j in range(len(a[i])) ]
for k in range(len(concatenatedList)):
    for l in range(k+1, len(concatenatedList)):
        if concatenatedList[k][0] == concatenatedList[l][0]:
            print("Float number is equal.\n")
            if concatenatedList[k][1] != concatenatedList[l][1]:
                print("IDs are different:\n")
                print(concatenatedList[k][1], concatenatedList[l][1], "\n\n")
            else:
                print("IDs are the same.\n\n")