Python 计数器|在二进制矩阵中查找重复行
原文:https://www . geeksforgeeks . org/python-counter-find-duplicate-row-binary-matrix/
给定一个元素只有 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 中非常快速地解决这个问题。方法很简单,
- 使用计数器方法创建一个字典,将行作为关键字,将其频率作为值。
- 现在完全遍历字典,打印频率大于 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)
版权属于:月萌API www.moonapi.com,转载请注明出处