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 的行。
# 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)