Python: conversión de columnas a diccionario en Matrix

Dada una array, convertir a diccionario con elementos en la primera fila como claves y las filas posteriores actuando como lista de valores.

Entrada : test_list = [[4, 5, 7], [10, 8, 4], [19, 4, 6], [9, 3, 6]] Salida: {4: [10, 19, 9
] , 5: [8, 4, 3], 7: [4, 6, 6]}
Explicación : todas las columnas asignadas con elementos de la primera fila. P.ej. 4 -> 10, 19, 9.

Entrada : test_list = [[4, 5, 7], [10, 8, 4], [19, 4, 6], [9, 3, 7]] Salida: {4: [10, 19, 9
] , 5: [8, 4, 3], 7: [4, 6, 7]}
Explicación : todas las columnas asignadas con elementos de la primera fila. P.ej. 7 -> 4, 6, 7.

Método #1: Uso de comprensión de lista + comprensión de diccionario

Esta es una de las formas en que se puede realizar esta tarea. En esto, la comprensión de listas es responsable de la construcción de valores y el mapeo y la conversión de diccionario se realiza utilizando la comprensión de diccionario.

Python3

# Python3 code to demonstrate working of 
# Columns to Dictionary Conversion in Matrix
# Using dictionary comprehension + list comprehension
  
# initializing list
test_list = [[4, 5, 7], [10, 8, 3], [19, 4, 6], [9, 3, 6]]
  
# printing original list
print("The original list : " + str(test_list))
  
# dictionary comprehension performing re making of result 
# dictionary
res = {test_list[0][idx]: [test_list[ele][idx]
      for ele in range(1, len(test_list))]
      for idx in range(len(test_list[0]))}
  
# printing result 
print("Reformed dictionary : " + str(res))
Producción

The original list : [[4, 5, 7], [10, 8, 3], [19, 4, 6], [9, 3, 6]]
Reformed dictionary : {4: [10, 19, 9], 5: [8, 4, 3], 7: [3, 6, 6]}

Método #2: Usando la comprensión del diccionario + zip()

Esta es otra manera de resolver este problema. En esto, mapeamos todos los elementos de la columna entre sí usando zip() y la comprensión del diccionario se usa para realizar la reconstrucción del diccionario.

Python3

# Python3 code to demonstrate working of 
# Columns to Dictionary Conversion in Matrix
# Using dictionary comprehension + zip()
  
# initializing list
test_list = [[4, 5, 7], [10, 8, 3], [19, 4, 6], [9, 3, 6]]
  
# printing original list
print("The original list : " + str(test_list))
  
# appropriate slicing before zip function 
res = {ele[0]: list(ele[1:]) for ele in zip(*test_list)}
  
# printing result 
print("Reformed dictionary : " + str(res))
Producción

The original list : [[4, 5, 7], [10, 8, 3], [19, 4, 6], [9, 3, 6]]
Reformed dictionary : {4: [10, 19, 9], 5: [8, 4, 3], 7: [3, 6, 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 *