Python: divisiones de jerarquía de grupos de claves en el diccionario

Dado un diccionario con teclas unidas por un carácter dividido, la tarea es escribir un programa Python para convertir el diccionario en diccionarios anidados y agrupados.

Ejemplos

Entrada: test_dict = {«1-3»: 2, «1-8»: 10}, splt_chr = «-«

Salida: {‘1’: {‘3’: 2, ‘8’: 10}}

Explicación: 1 está vinculado a 3 con valor 2 y 8 con valor 10, por lo tanto, esos elementos están anidados y se asignan valores.

Entrada: test_dict = {“1-3”: 2, “8-7”: 0, “1-8”: 10, “8-6”: 15}, splt_chr = “-“

Salida: {‘1’: {‘3’: 2, ‘8’: 10}, ‘8’: {‘7’: 0, ‘6’: 15}}

Explicación: 1 está vinculado a 3 con valor 2 y 8 con valor 10, de manera similar, 8 está vinculado a 7 con valor 0 y 6 con valor 15, por lo tanto, esos elementos están anidados y se asignan valores.

Método #1: Usar loop + split()

En esto, realizamos la tarea de dividir las claves para aplanar usando split(). Y luego, la memorización de claves se realiza mediante el uso de un diccionario que agrega a sus diccionarios anidados otras claves anidadas similares encontradas. 

Python3

# Python3 code to demonstrate working of
# Group Hierarchy Splits of keys in Dictionary
# Using loop + split()
 
# initializing dictionary
test_dict = {"1-3" : 2, "8-7" : 0, "1-8" : 10, "8-6" : 15}
              
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
 
# initializing split char
splt_chr = "-"
 
res = dict()
for key, val in test_dict.items():
    ini_key, low_key = key.split(splt_chr)
     
    # check if key already present
    if ini_key not in res:
        res[ini_key] = dict()
     
    # add nested value if present key
    res[ini_key][low_key] = val
 
# printing result
print("The splitted dictionary : " + str(res))
Producción

The original dictionary is : {'1-3': 2, '8-7': 0, '1-8': 10, '8-6': 15}
The splitted dictionary : {'1': {'3': 2, '8': 10}, '8': {'7': 0, '6': 15}}

Método #2: Usando defaultdict() 

De manera similar al método anterior, la única diferencia es que se usa defaultdict() para la tarea de memorizar las claves de agrupación.

Python3

# Python3 code to demonstrate working of
# Group Hierarchy Splits of keys in Dictionary
# Using defaultdict()
from collections import defaultdict
 
# initializing dictionary
test_dict = {"1-3" : 2, "8-7" : 0, "1-8" : 10, "8-6" : 15}
              
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
 
# initializing split char
splt_chr = "-"
 
res = defaultdict(dict)
for key, val in test_dict.items():
    ini_key, low_key = key.split(splt_chr)
     
    # defaultdict eliminates check step
    res[ini_key][low_key] = val
 
# printing result
print("The splitted dictionary : " + str(dict(res)))
Producción

The original dictionary is : {'1-3': 2, '8-7': 0, '1-8': 10, '8-6': 15}
The splitted dictionary : {'1': {'3': 2, '8': 10}, '8': {'7': 0, '6': 15}}

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 *