Python – Convertir array en diccionario de coordenadas

A veces, mientras trabajamos con diccionarios de Python, podemos tener problemas en los que necesitamos realizar la conversión de elementos de array a su lista de coordenadas. Este tipo de problema puede surgir en muchos dominios, incluida la programación diaria y la programación competitiva. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_list = [[‘g’, ‘g’, ‘g’], [‘g’, ‘g’, ‘g’]]
Salida : {‘g’: {(0, 1), (1, 2), (0, 0), (1, 1), (1, 0), (0, 2)}}

Entrada : test_list = [[‘a’, ‘b’, ‘c’]]
Salida : {‘a’: {(0, 0)}, ‘b’: {(0, 1)}, ‘c’: {(0, 2)}}

Método n.º 1: Usar loop +enumerate()
La combinación de las funcionalidades anteriores se puede usar para realizar esta tarea. En esto, usamos la fuerza bruta para extraer elementos y asignarles índices con la ayuda de enumerate().

# Python3 code to demonstrate working of 
# Convert Matrix to Coordinate Dictionary
# Using loop + enumerate()
  
# initializing list
test_list = [['g', 'f', 'g'], ['i', 's', 'g'], ['b', 'e', 's', 't']]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Convert Matrix to Coordinate Dictionary
# Using loop + enumerate()
res = dict()
for idx, sub in enumerate(test_list):
    for j, ele in enumerate(sub):
        if ele in res:
            res[ele].add((idx, j))
        else:
            res[ele] = {(idx, j)}
  
# printing result 
print("The Coordinate Dictionary : " + str(res)) 
Producción :

La lista original es: [[‘g’, ‘f’, ‘g’], [‘i’, ‘s’, ‘g’], [‘b’, ‘e’, ​​’s’, ‘t’ ]]
El diccionario de coordenadas: {‘g’: {(1, 2), (0, 0), (0, 2)}, ‘f’: {(0, 1)}, ‘t’: {(2 , 3)}, ‘i’: {(1, 0)}, ‘b’: {(2, 0)}, ‘e’: {(2, 1)}, ‘s’: {(1, 1 ), (2, 2)}}

Método n.º 2: uso setdefault()del bucle +
Este método funciona de manera similar al anterior, solo que la diferencia es que setdefault()reduce la tarea de memorizar el valor del elemento y las comprobaciones de presencia de teclas.

# Python3 code to demonstrate working of 
# Convert Matrix to Coordinate Dictionary
# Using setdefault() + loop
  
# initializing list
test_list = [['g', 'f', 'g'], ['i', 's', 'g'], ['b', 'e', 's', 't']]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Convert Matrix to Coordinate Dictionary
# Using setdefault() + loop
res = dict()
for idx, ele in enumerate(test_list):
    for j, sub in enumerate(ele):
        res.setdefault(sub, set()).add((idx, j))
  
# printing result 
print("The Coordinate Dictionary : " + str(res)) 
Producción :

La lista original es: [[‘g’, ‘f’, ‘g’], [‘i’, ‘s’, ‘g’], [‘b’, ‘e’, ​​’s’, ‘t’ ]]
El diccionario de coordenadas: {‘g’: {(1, 2), (0, 0), (0, 2)}, ‘f’: {(0, 1)}, ‘t’: {(2 , 3)}, ‘i’: {(1, 0)}, ‘b’: {(2, 0)}, ‘e’: {(2, 1)}, ‘s’: {(1, 1 ), (2, 2)}}

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 *