Python – Vecinos emparejados al diccionario de adyacencia

A veces, mientras trabajamos con pares de Python, podemos tener problemas en los que los pares representan a los vecinos y necesitamos calcular los vecinos de cada elemento. Este tipo de problema es bastante común en la programación competitiva y al trabajar con gráficos. Analicemos ciertas formas en que se puede realizar esta tarea.

Método n.º 1: Uso del bucle
Este es uno de los enfoques que se pueden aplicar para resolver este problema. En esto, asumimos previamente las claves requeridas y construimos el diccionario con listas vacías, e iteramos la lista de pares agregando los valores.

# Python3 code to demonstrate working of 
# Paired Neighbours to Adjacency Dictionary
# Using loop
  
# initializing list
test_list = [(1, 2), (4, 5), (1, 3), (3, 4), (5, 6), (6, 2)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Paired Neighbours to Adjacency Dictionary
# Using loop
res = {1: [], 2: [], 3: [], 4: [], 5: [], 6: []}
for sub in test_list:
    res[sub[0]].append(sub[1])
    res[sub[1]].append(sub[0])
      
# printing result 
print("The Neighbours Paired Dictionary : " + str(res)) 
Producción :

La lista original es: [(1, 2), (4, 5), (1, 3), (3, 4), (5, 6), (6, 2)]
Diccionario de pares de vecinos: {1: [2, 3], 2: [1, 6], 3: [1, 4], 4: [5, 3], 5: [4, 6], 6: [5, 2]}

Método #2: Usar el defaultdict()bucle +
La combinación de las funciones anteriores también se puede usar para resolver este problema. En esto, inicializamos el diccionario como conjunto predeterminado. Elimina el problema de la duplicación y también brinda más flexibilidad con respecto a valores de Node más indeterminados.

# Python3 code to demonstrate working of 
# Paired Neighbours to Adjacency Dictionary
# Using defaultdict() + loop
from collections import defaultdict
  
# initializing list
test_list = [(1, 2), (4, 5), (1, 3), (3, 4), (5, 6), (6, 2)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Paired Neighbours to Adjacency Dictionary
# Using defaultdict() + loop
res = defaultdict(set)
for sub in test_list:
    res[sub[0]].add(sub[1])
    res[sub[1]].add(sub[0])
      
# printing result 
print("The Neighbours Paired Dictionary : " + str(dict(res))) 
Producción :

La lista original es: [(1, 2), (4, 5), (1, 3), (3, 4), (5, 6), (6, 2)]
Diccionario de pares de vecinos: {1: {2, 3}, 2: {1, 6}, 3: {1, 4}, 4: {3, 5}, 5: {4, 6}, 6: {2, 5}}

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 *