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