📜  Python|计算元组列表中的重复项的程序

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

Python|计算元组列表中的重复项的程序

给定一个元组列表,编写一个Python程序来检查列表中的元素是否有重复项。如果存在重复,则打印每个重复元组的出现次数,否则打印“No Duplicates”。

例子:

让我们看看我们可以在元组列表中计算重复项的各种方法。

方法#1:朴素的方法

这种方法使用两个循环遍历列表元素并检查每个元素的第一个元素和第二个元素是否与任何其他元组匹配。

# Python3 code to convert tuple 
# into string
def count(listOfTuple):
      
    flag = False
  
    # To append Duplicate elements in list
    coll_list = []  
    coll_cnt = 0
    for t in listOfTuple:
          
        # To check if Duplicate exist
        if t in coll_list:  
            flag = True
            continue
          
        else:
            coll_cnt = 0
            for b in listOfTuple:
                if b[0] == t[0] and b[1] == t[1]:
                    coll_cnt = coll_cnt + 1
              
            # To print count if Duplicate of element exist
            if(coll_cnt > 1): 
                print(t, "-", coll_cnt)
            coll_list.append(t)
                       
    if flag == False:
        print("No Duplicates")
  
# Driver code
print("Test Case 1:")
listOfTuple = [('a', 'e'), ('b', 'x'), ('b', 'x'), 
               ('a', 'e'), ('b', 'x')] 
  
count(listOfTuple)
  
print("Test Case 2:")
listOfTuple = [(0, 5), (6, 9), (0, 8)]
count(listOfTuple)
输出:
Test Case 1:
('a', 'e') - 2
('b', 'x') - 3

Test Case 2:
No Duplicates

时间复杂度 – O(n) 2


方法#2:使用计数器

Counter 是集合模块中包含的容器。它是一个无序集合,其中元素及其各自的计数存储为字典。

# Python3 code to convert tuple 
# into string
import collections
  
def count(listOfTuple):
      
    flag = False
    val = collections.Counter(listOfTuple)
    uniqueList = list(set(listOfTuple))
      
    for i in uniqueList:
        if val[i]>= 2:
            flag = True
            print(i, "-", val[i])
              
    if flag == False:
        print("Duplicate doesn't exist")
  
# Driver code
listOfTuple = [('a', 'e'), ('b', 'x'), ('b', 'x'), 
               ('a', 'e'), ('b', 'x')] 
count(listOfTuple)
输出:
('b', 'x') - 3
('a', 'e') - 2

时间复杂度 - O(n)方法#3:使用另一个字典

您可以制作一个字典,例如count_map ,并将每个元组的计数存储为值。

# Python3 code to convert tuple 
# into string
def count(listOfTuple):
      
    count_map = {}
    for i in listOfTuple:
        count_map[i] = count_map.get(i, 0) +1
    print(count_map)
  
# Driver code
print("Test Case 1:")
listOfTuple = [('a', 'e'), ('b', 'x'), ('b', 'x'), 
               ('a', 'e'), ('b', 'x')] 
  
count(listOfTuple)
输出:
Test Case 1:
{('a', 'e'): 2, ('b', 'x'): 3}

时间复杂度 - O(n)