logo

Pitón | Formas de crear un diccionario de Listas

Hasta ahora, hemos visto las formas de crear un diccionario de múltiples formas y diferentes operaciones con las claves y los valores en Python. diccionario . Ahora veamos diferentes formas de crear un diccionario de listas. Tenga en cuenta que la restricción con claves en el Pitón El diccionario es solo tipos de datos inmutables que se pueden usar como claves, lo que significa que no podemos usar un diccionario de listas como clave.

Ejemplo :



  Input:   myDict = {}  myDict['key1'] = [1, 2] # Adding list as value  myDict['key2'] = ['Geeks', 'For', 'Geeks']    Output:   {'key2': ['Geeks', 'For', 'Geeks'], 'key1': [1, 2]}    Explanation:   In the output, we have a dictionary of lists.>

Planteamiento del problema

Generalmente obtenemos el error de escritura si intentamos implementarlo de la forma normal.

Python3








# Creating a dictionary> myDict>=> {[>1>,>2>]:>'Geeks'>}> print>(myDict)>

>

>

Producción:

TypeError: unhashable type: 'list'>

Pero lo mismo se puede hacer muy sabiamente con los valores de un diccionario. Veamos las diferentes formas en que podemos crear un diccionario de Listas.

Formas de crear un diccionario de listas

A continuación se detallan los temas que cubriremos en este artículo:

Crear un diccionario de listas usando subíndice

Este código inicializa un vacío diccionario myDict>. Luego agrega dos pares clave-valor al diccionario:'key1'>con el valor[1, 2]>, y'key2'>con el valor['Geeks', 'For', 'Geeks']>. Finalmente, el código imprime el contenido del diccionario.

Python3




# Creating an empty dictionary> myDict>=> {}> # Adding list as value> myDict[>'key1'>]>=> [>1>,>2>]> myDict[>'key2'>]>=> [>'Geeks'>,>'For'>,>'Geeks'>]> print>(myDict)>

cadena como una matriz

>

>

Producción:

{'key2': ['Geeks', 'For', 'Geeks'], 'key1': [1, 2]}>

Complejidad del tiempo: O(1) para cada inserción de diccionario e impresión del diccionario.
Espacio auxiliar: O(n), donde n es el número total de elementos del diccionario.

Cree un diccionario de listas usando el método append()

Agregar una lista anidada como valor usando el método agregar(). Cree una nueva lista y simplemente podemos agregar esa lista al valor.

Python3




# Creating an empty dictionary> myDict>=> {}> # Adding list as value> myDict[>'key1'>]>=> [>1>,>2>]> # creating a list> lst>=> [>'Geeks'>,>'For'>,>'Geeks'>]> # Adding this list as sublist in myDict> myDict[>'key1'>].append(lst)> print>(myDict)>

>

>

Producción:

{'key1': [1, 2, ['Geeks', 'For', 'Geeks']]}>

Complejidad del tiempo: O(1).
Complejidad del espacio auxiliar: En).

Cree un diccionario de listas usando el método setdefault()

Itere la lista y siga agregando los elementos hasta el rango dado usando el método setdefault().

Python imprime con 2 decimales

Python3




# Creating an empty dict> myDict>=> dict>()> # Creating a list> valList>=> [>'1'>,>'2'>,>'3'>]> # Iterating the elements in list> for> val>in> valList:> >for> ele>in> range>(>int>(val),>int>(val)>+> 2>):> >myDict.setdefault(ele, []).append(val)> print>(myDict)>

>

>

Producción:

{1: ['1'], 2: ['1', '2'], 3: ['2', '3'], 4: ['3']}>

Complejidad del tiempo: O(n^2)
Complejidad espacial: En)

Crear un diccionario de listas usando la comprensión de listas

En comprensión de la lista iteramos sobre los valores'1'>,'2'>, y'3'>y para cada valor, crea un par clave-valor en el diccionario. La clave es el valor actual y el valor es un rango de números enteros que comienza desde el valor convertido a un número entero y termina en el valor más 1.

Pitón


cadena.formato en java



# Creating a dictionary of lists using list comprehension> d>=> dict>((val,>range>(>int>(val),>int>(val)>+> 2>))> >for> val>in> [>'1'>,>'2'>,>'3'>])> print>(d)>

>

>

Producción:

{'1': [1, 2], '3': [3, 4], '2': [2, 3]}>

Complejidad del tiempo: O(1).
Complejidad del espacio auxiliar: En).

Crear diccionario de listas usando defaultdict

Importar el dictamen predeterminado clase del módulo de colecciones. Defina una lista de tuplas primero y cada tupla contenga un par clave-valor. Cree un objeto defaultdict llamado orDict que tendrá valores predeterminados de una lista vacía. Itere sobre la lista de tuplas primero usando un bucle for y descomprima cada tupla en las variables clave y val. Agregue el valor val a la lista asociada con la clave en el diccionario orDict.

Imprima el diccionario resultante o Dict.

Nota : También se puede hacer lo mismo con un diccionario simple, pero usar defaultdict es más eficiente en tales casos.

Python3




from> collections>import> defaultdict> lst>=> [(>'Geeks'>,>1>), (>'For'>,>2>), (>'Geeks'>,>3>)]> orDict>=> defaultdict(>list>)> # iterating over list of tuples> for> key, val>in> lst:> >orDict[key].append(val)> print>(orDict)>

>

>

Producción:

defaultdict(, {'For': [2], 'Geeks': [1, 3]})>

Complejidad del tiempo: O (n).
Espacio auxiliar: O(n).

Tenga en cuenta que solo hay dos pares clave: valor en el diccionario de salida, pero la lista de entrada contiene tres tuplas. El primer elemento (es decir, la clave) es el mismo para la primera y la tercera tupla y dos claves nunca pueden ser iguales.

Creando un diccionario de listas usando Json

Al importar eljson>módulo. Inicializa una listalst>que contiene tuplas. Entonces, un diccionario vacío.dict>se inicializa. El código convierte la lista.lst>en una cadena con formato JSON usandojson.dumps()> y asigna esta cadena como clave en el diccionariodict>con el valor convertido. Finalmente, se imprime el diccionario.

Python3




#importing json> import> json> #Initialisation of list> lst>=> [(>'Geeks'>,>1>), (>'For'>,>2>), (>'Geeks'>,>3>)]> #Initialisation of dictionary> dict> => {}> #using json.dump()> hash> => json.dumps(lst)> #creating a hash> dict>[>hash>]>=> 'converted'> #Printing dictionary> print>(>dict>)>

>

>

Producción:

{'[['Geeks', 1], ['For', 2], ['Geeks', 3]]': 'converted'}>

Complejidad del tiempo: O(n), donde n es la longitud de la lista.
Espacio auxiliar: O(n), donde n es la longitud de la lista.

Crear diccionario de listas usando herramientas iterativas

Un enfoque es utilizar la función zip_longest del módulo itertools. Esta función le permite iterar sobre dos o más iterables de forma paralela, completando los elementos faltantes con un valor de relleno específico.

Python3




from> itertools>import> zip_longest> # Initialize the lists> list1>=> [>1>,>2>,>3>]> list2>=> [>10>,>20>,>30>,>40>]> list3>=> [>'a'>,>'b'>,>'c'>,>'d'>,>'e'>]> # Use zip_longest to iterate over the lists in parallel> d>=> {}> for> elem1, elem2, elem3>in> zip_longest(list1, list2, list3, fillvalue>=>0>):> >d.setdefault(elem1, []).append(elem2)> >d.setdefault(elem1, []).append(elem3)> print>(d)> # Output: {1: [10, 'a'], 2: [20, 'b'], 3: [30, 'c'], 0: [40, 'd']}>

descargar videos de youtube en vlc
>

>

Producción

{1: [10, 'a'], 2: [20, 'b'], 3: [30, 'c'], 0: [40, 'd', 0, 'e']}>

Complejidad del tiempo: O(n), donde n es la longitud de la lista más larga.
Espacio auxiliar: En)