📜  Python计数器|在二进制矩阵中查找重复行

📅  最后修改于: 2022-05-13 01:55:44.600000             🧑  作者: Mango

Python计数器|在二进制矩阵中查找重复行

给定一个元素只有 0 和 1 的二进制矩阵,我们需要打印与矩阵中已经存在的行重复的行。

例子:

Input : [[1, 1, 0, 1, 0, 1],
         [0, 0, 1, 0, 0, 1],
         [1, 0, 1, 1, 0, 0],
         [1, 1, 0, 1, 0, 1],
         [0, 0, 1, 0, 0, 1],
         [0, 0, 1, 0, 0, 1]]

Output : (1, 1, 0, 1, 0, 1)
         (0, 0, 1, 0, 0, 1)

我们有针对此问题的现有解决方案,请参阅在二进制矩阵链接中查找重复行。我们可以在Python中使用 Counter() 方法非常快速地解决这个问题。方法很简单,

  1. 使用计数器方法创建一个字典,它将行作为键,频率作为值。
  2. 现在完全遍历字典并打印所有频率大于 1 的行。
# Function to find duplicate rows in a binary matrix
from collections import Counter
  
def duplicate(input):
  
     # since lists are unhasable for counter method
     # because lists are mutable so first we will cast
     # each row (list) into tuple
     input = map(tuple,input)
  
     # now create dictionary
     freqDict = Counter(input)
  
     # print all rows having frequency greater than 1
     for (row,freq) in freqDict.items():
          if freq>1:
              print (row)
  
# Driver program
if __name__ == "__main__":
    input = [[1, 1, 0, 1, 0, 1],
            [0, 0, 1, 0, 0, 1],
            [1, 0, 1, 1, 0, 0],
            [1, 1, 0, 1, 0, 1],
            [0, 0, 1, 0, 0, 1],
            [0, 0, 1, 0, 0, 1]]
    duplicate(input)

输出:

(1, 1, 0, 1, 0, 1)
(0, 0, 1, 0, 0, 1)