比较列表的实体,并获取具有两个以上相似标识的列表的索引

2024-04-25 09:15:18 发布

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

我的清单如下

输入:

[(21, 5, 4, 3), (21, 4, 1, 2), (21, 5, 1), (22, 8, 4, 2), (22, 4, 6, 7), (22, 8, 6)]

列表中的每个列表始终只有整数。我想找到至少两个条目相同的列表,然后保存并打印这些列表的索引

输出:

0 0 1
1 0 2
2 1 2
3 1 3
4 3 4
5 3 5
6 4 5

找到的对数索引中输出的第一列。 第2列第3列显示具有2个或2个以上类似实体的列表的索引。 如果我可以得到一个列表,其中我可以访问每个元素,比如list[0][0]将给出0(第一对),list[0][1]将给出第一对的第一个实体,list[0][2]将给出第一对的第二个实体,依此类推。它会更好,这样我就可以解析它根据我的要求

解析和打印不会有问题

敬礼


Tags: 实体元素列表对数条目整数list
1条回答
网友
1楼 · 发布于 2024-04-25 09:15:18

您可以将元组转换为集合并执行以下操作:

d = [(21, 5, 4, 3), (21, 4, 1, 2), (21, 5, 1), (22, 8, 4, 2), (22, 4, 6, 7), (22, 8, 6)]
d = [set(l) for l in d]
index = 0
res = []

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

print res # [[0, 0, 1], [1, 0, 2], [2, 1, 2], [3, 1, 3], [4, 3, 4], [5, 3, 5], [6, 4, 5]]

这适用于python2.x,对于3.x,应该使用range而不是xrange,使用print函数而不是语句

相关问题 更多 >