Python | Categorizar valores de tupla en la lista de valores del diccionario

A veces, mientras trabajamos con Python, podemos encontrarnos con un problema en el que tenemos datos en forma de lista de tuplas, y lo que pretendemos es categorizarlos en el diccionario con una lista de valores de tuplas. Analicemos ciertas formas en que se puede realizar esta tarea.

Método n.º 1: Usar el setdefault()bucle +
Esta tarea se puede realizar fácilmente usando setdefault(). En esto, simplemente tomamos el par de tupla clave y valor por iteración y setdafault()se usa para asignar valor a la clave correspondiente del diccionario.

# Python3 code to demonstrate working of
# Categorize tuple values into dictionary value list
# Using setdefault() + loop
  
# Initialize list of tuples
test_list = [(1, 3), (1, 4), (2, 3), (3, 2), (5, 3), (6, 4)]
  
# printing original list
print("The original list : " +  str(test_list))
  
# Using setdefault() + loop
# Categorize tuple values into dictionary value list
res = {}
for i, j in test_list:
     res.setdefault(j, []).append(i)
  
# printing result 
print("The dictionary converted from tuple list : " + str(res))
Producción :

La lista original: [(1, 3), (1, 4), (2, 3), (3, 2), (5, 3), (6, 4)]
El diccionario convertido de la lista de tuplas: {2 : [3], 3: [1, 2, 5], 4: [1, 6]}

Método n.º 2: usar dict()+ comprensión de listas +frozenset()
La combinación de los métodos anteriores se puede usar para realizar esta tarea en particular. En esto, los cálculos lógicos se realizan en comprensión con la ayuda de frozenset()y el contenedor se convierte en diccionario usando dict().

# Python3 code to demonstrate working of
# Categorize tuple values into dictionary value list
# Using dict() + list comprehension + frozenset()
  
# Initialize list of tuples
test_list = [(1, 3), (1, 4), (2, 3), (3, 2), (5, 3), (6, 4)]
  
# printing original list
print("The original list : " +  str(test_list))
  
# Using dict() + list comprehension + frozenset()
# Categorize tuple values into dictionary value list
res = dict((key, [i[0] for i in test_list if i[1] == key])
             for key in frozenset(j[1] for j in test_list))
  
# printing result 
print("The dictionary converted from tuple list : " + str(res))
Producción :

La lista original: [(1, 3), (1, 4), (2, 3), (3, 2), (5, 3), (6, 4)]
El diccionario convertido de la lista de tuplas: {2 : [3], 3: [1, 2, 5], 4: [1, 6]}

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 *