Dada una lista, conviértala en listas consecutivas de clave-valor, agrupándolas por prefijo.
Entrada : test_list = [“GFG-1”, 4, 6, “GFG-2”, 3, “GFG-3”, 9, 2], temp = “GF”
Salida : {‘GFG-1’: [4 , 6], ‘GFG-2’: [3], ‘GFG-3’: [9, 2]}
Explicación : Todos agrupados hasta el siguiente prefijo.Entrada : test_list = [“MRK-1”, 4, 6, “MRK-2”, 3, “MRK-3”, 9, 2], temp = “MR”
Salida : {‘MRK-1’: [4 , 6], ‘MRK-2’: [3], ‘MRK-3’: [9, 2]}
Explicación : Todos agrupados hasta el siguiente prefijo, “MR”.
Método: Usando groupby() + empieza con() + lambda
La combinación de las funciones anteriores se puede utilizar para resolver este problema. En esto, empleamos la agrupación de todos los elementos por prefijo usando groupby() y las funciones lambda ayudan a realizar la segregación de prefijo para la agrupación.
Python3
# Python3 code to demonstrate working of # Convert List to key-value list by prefic grouping # Using groupby() + startswith() + lambda from itertools import groupby # initializing list test_list = ["GFG-1", 4, 6, 7, "GFG-2", 2, 3, "GFG-3", 9, 2, 4, 6] # printing original list print("The original list : " + str(test_list)) # initializing prefix temp = "GFG" res = {} # extracting result from grouped by prefix for key, val in groupby(test_list, lambda ele: str(ele).startswith(temp)): # checking for existing key if key: k = next(val) else: res[k] = list(val) # printing result print("The constructed dictionary : " + str(res))
The original list : ['GFG-1', 4, 6, 7, 'GFG-2', 2, 3, 'GFG-3', 9, 2, 4, 6] The constructed dictionary : {'GFG-1': [4, 6, 7], 'GFG-2': [2, 3], 'GFG-3': [9, 2, 4, 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