Python:进行重复计数时删除重复元素

标签 python for-loop duplicates tuples

下面是 3D 点组的元组

f = [[10, 20, 0], 
    [40, 20, 30], 
    [20, 0, 30], 
    [10, 10, 0], 
    [30, 10, 10], 
    [20, 0, 30], 
    [20, 10, 20], 
    [10, 10, 0]]

每个点对应一个特定的数字(索引),指示点的类型(假设)

ic=[1,2,3,2,1,3,2,3,1]

因此,前面的元组可以表示为

f = [[10, 20, 0, 1], 
    [40, 20, 30, 2], 
    [20, 0, 30, 3], 
    [10, 10, 0, 2], 
    [30, 10, 10, 1], 
    [20, 0, 30, 3], 
    [20, 10, 20, 2], 
    [10, 10, 0, 3],
    [20, 0, 30, 1]]

这是我的代码:

def selectUnique(x):
    count = Counter((i[0], i[1], i[2]) for i in x)
    out = [i for i in x if count[(i[0], i[1], i[2])] == 1]
    return out

selectUnique(f)

我想要得到的结果如下所示:

独特部分:

index       point         equivalent points    index
  0      [10, 20, 0, 1]           1             [1]
  1      [40, 20, 30, 2]          1             [2]
  2      [20, 0, 30, 3]           3             [3,3,1]
  3      [10, 10, 0, 2]           2             [2,3]
  4      [30, 10, 10, 1]          1             [1]
  6      [20, 10, 20, 2]          1             [2]

重复部分:

index       point         Duplicate or not
  5      [20, 0, 30, 3]       duplicate
  7      [10, 10, 0, 3]       duplicate
  8      [20, 0, 30, 1]       duplicate

我的代码旨在实现挑出重复点并指示其在列表中的索引的功能。另外,我还需要实现显示我的独特部分中有多少等价点以及这些等价点的索引的功能。

但是,我的代码无法运行,我该如何修改它?

最佳答案

uniq = []
dup = []
count = 0
for i, j, k  in f:
    if not [f.index([i,j,k]),i,j,k] in uniq:
        uniq.append([count,i,j,k])
    else:
        dup.append([count,i,j,k,"duplicate"])
    count += 1
uniq.extend(dup)
print uniq

[[0, 10, 20, 0], [1, 40, 20, 30], [2, 20, 0, 30], [3, 10, 10, 0], [4, 30, 10, 10], [6, 20, 10, 20], [5, 20, 0, 30, 'duplicate'], [7, 10, 10, 0, 'duplicate']]

for j in (uniq):
    j.append(ic[j[0]])
print uniq


 [[0, 10, 20, 0, 1], [1, 40, 20, 30, 2], [2, 20, 0, 30, 3], [3, 10, 10, 0, 2], [4, 30, 10, 10, 1], [6, 20, 10, 20, 2], [5, 20, 0, 30, 'duplicate', 3], [7, 10, 10, 0, 'duplicate', 3]]

关于Python:进行重复计数时删除重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24171384/

相关文章:

python - re.match 在两个不同的字符串上返回 true

python - Jython Gstreamer

java - 如何在Python中影响内循环的外循环变量?

mysql - 通过一个表的重复项从两个表中选择多行

python - 语法错误: invalid syntax in URLpattern

python - 使用 OpenCV 进行对象跟踪

jquery - 循环遍历json数组Jquery

java - 如何从for循环打印数组?

c# - 获取列表中重复项的计数

mysql - 重复输入错误,但存在欺骗