Dado un diccionario con claves de string y conjuntos como valores, la tarea es escribir un programa de Python para concatenar claves, todas las cuales tienen un orden de valores similar independientemente.
Entrada: test_dict = {‘gfg’: {5, 4, 3}, ‘es’: {4, 3, 5}, ‘mejor’: {1, 4, 3}, ‘para’: {1, 3, 4}, ‘geeks’: {1, 2, 3}}
Salida: {‘gfg-is’: conjunto congelado ({3, 4, 5}), ‘mejor para’: conjunto congelado ({1, 3, 4}), ‘geeks’: conjunto congelado ({1, 2, 3} )}
Explicación: las claves de conjunto similares están concatenadas, {5, 4, 3} == {4, 3, 5}, por lo tanto, gfg-is están concatenadas.
Entrada: test_dict = {‘gfg’: {5, 4, 3}, ‘es’: {4, 3, 5}, ‘geeks’: {1, 2, 3}}
Salida: {‘gfg-is’: conjunto congelado ({3, 4, 5}), ‘geeks’: conjunto congelado ({1, 2, 3})}
Explicación: las claves de conjunto similares están concatenadas, {5, 4, 3} == {4, 3, 5}, por lo tanto, gfg-is están concatenadas.
Método #1: Usando defaultdict() + join()
En esto, realizamos la tarea de codificar cada conjunto y agregar las claves correspondientes usando defaultdict(). El siguiente paso es unir todas las claves hash a valores establecidos similares.
Python3
# Python3 code to demonstrate working of # Concatenate similar set keys in Dictionary # Using defaultdict() + join() from collections import defaultdict # initializing dictionary test_dict = {'gfg': {5, 4, 3}, 'is': {4, 3, 5}, 'best': { 1, 4, 3}, 'for': {1, 3, 4}, 'geeks': {1, 2, 3}} # printing original dictionary print("The original dictionary is : " + str(test_dict)) hash_vals = defaultdict(list) for key, val in test_dict.items(): # values are hashed using frozenset hash_vals[frozenset(val)].append(key) # perform joining res = {'-'.join(keys): vals for (vals, keys) in hash_vals.items()} # printing result print("The concatenated keys : " + str(res))
Producción:
El diccionario original es: {‘gfg’: {3, 4, 5}, ‘is’: {3, 4, 5}, ‘best’: {1, 3, 4}, ‘for’: {1, 3 , 4}, ‘geeks’: {1, 2, 3}}
Las claves concatenadas: {‘gfg-is’: frozenset({3, 4, 5}), ‘best-for’: frozenset({1, 3, 4}), ‘geeks’: frozenset({1, 2, 3})}
Método #2: Usando groupby() + join() + comprensión de diccionario
En esto, realizamos tareas de agrupar elementos similares usando groupby(). Después de eso, la unión de claves de valor similar se realiza mediante join().
Python3
# Python3 code to demonstrate working of # Concatenate similar set keys in Dictionary # Using groupby() + join() + dictionary comprehension from itertools import groupby # initializing dictionary test_dict = {'gfg': {5, 4, 3}, 'is': {4, 3, 5}, 'best': {1, 4, 3}, 'for': {1, 3, 4}, 'geeks': {1, 2, 3}} # printing original dictionary print("The original dictionary is : " + str(test_dict)) # elements grouped using groupby() # dictionary comprehension provides shorthand to perform grouping res = {'-'.join(val): key for key, val in groupby( sorted(test_dict, key=test_dict.get), key=lambda sub: test_dict[sub])} # printing result print("The concatenated keys : " + str(res))
Producción:
El diccionario original es: {‘gfg’: {3, 4, 5}, ‘is’: {3, 4, 5}, ‘best’: {1, 3, 4}, ‘for’: {1, 3 , 4}, ‘geeks’: {1, 2, 3}}
Las claves concatenadas: {‘gfg-is’: {3, 4, 5}, ‘best-for’: {1, 3, 4}, ‘geeks’: {1, 2, 3}}
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