El programa Python para contar claves únicas para el valor en la lista de tuplas

Dadas las tuplas duales, obtenga un recuento de claves únicas para cada valor presente en la tupla.

Entrada : test_list = [(3, 4), (1, 2), (2, 4), (8, 2), (7, 2), (8, 1), (9, 1), (8, 4), (10, 4)] 
Salida : {4: 4, 2: 3, 1: 2} 
Explicación : 3, 2, 8 y 10 son claves para el valor 4.

Entrada : test_list = [(3, 4), (1, 2), (8, 1), (9, 1), (8, 4), (10, 4)] 
Salida : {4: 3, 2: 1, 1: 2} 
Explicación : 3, 8 y 10 son claves para el valor 4. 
 

Método #1: Usar loop + defaultdict()

En esto, iteramos para cada elemento de tupla, teniendo clave como valor de tupla, y lo incrementamos con cada clave diferente encontrada en la lista de valores del diccionario. A continuación, la frecuencia se calcula utilizando otra iteración obteniendo la longitud de la lista de valores asignados, convirtiéndola en un conjunto para obtener un recuento único.

Python3

# Python3 code to demonstrate working of 
# Unique keys count for Value in Tuple List
# Using loop + defaultdict()
from collections import defaultdict
  
# initializing list
test_list = [(3, 4), (1, 2), (2, 4), (8, 2), (7, 2), (8, 1), (9, 1), (8, 4), (10, 4)]
  
# printing original list
print("The original list is : " + str(test_list))
  
  
res = defaultdict(list)
for sub in test_list:
      
    # getting all keys to values
    res[sub[1]].append(sub[0])
      
  
res = dict(res)
  
  
res_dict = dict()
for key in res:
      
    # getting unique key counts for each value
    res_dict[key] = len(list(set(res[key])))
  
  
# printing result 
print("Unique keys for values : " + str(res_dict))

Producción:

La lista original es: [(3, 4), (1, 2), (2, 4), (8, 2), (7, 2), (8, 1), (9, 1), (8 , 4), (10, 4)]

Claves únicas para valores: {4: 4, 2: 3, 1: 2}

Método #2: Usar loop + defaultdict() + Counter()

En esto, con el fin de reducir un ciclo de cálculo, la lista se construye dinámicamente con valores únicos. Entonces Counter() se usa para obtener un diccionario de valor único.

Python3

# Python3 code to demonstrate working of 
# loop + defaultdict() + Counter()
# Using loop + defaultdict() + Counter()
from collections import defaultdict, Counter
  
# initializing list
test_list = [(3, 4), (1, 2), (2, 4), (8, 2), (7, 2),
             (8, 1), (9, 1), (8, 4), (10, 4)]
  
# printing original list
print("The original list is : " + str(test_list))
  
mem_dict = defaultdict(list)
res = []
for sub in test_list:
      
    # if not in dict, add value 
    if sub[0] not in mem_dict[sub[1]]:
        mem_dict[sub[1]].append(sub[0])
        res.append(sub[1])
          
# getting frequency 
res = dict(Counter(res))
  
# printing result 
print("Unique keys for values : " + str(res))

Producción:

La lista original es: [(3, 4), (1, 2), (2, 4), (8, 2), (7, 2), (8, 1), (9, 1), (8 , 4), (10, 4)]
Claves únicas para valores: {4: 4, 2: 3, 1: 2}

Python3

# Python3 code to demonstrate working of 
# Unique keys count for Value in Tuple List
# Using loop + defaultdict()
from collections import defaultdict
  
# initializing list
test_list = [(3, 4), (1, 2), (2, 4), (8, 2), (7, 2), 
             (8, 1), (9, 1), (8, 4), (10, 4)]
  
# printing original list
print("The original list is : " + str(test_list))
  
  
res = defaultdict(list)
for sub in test_list:
      
    # getting all keys to values
    res[sub[1]].append(sub[0])
      
  
res = dict(res)
  
  
res_dict = dict()
for key in res:
      
    # getting unique key counts for each value
    res_dict[key] = len(list(set(res[key])))
  
  
# printing result 
print("Unique keys for values : " + str(res_dict))

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *