Python – Diccionario de listas

¿Cuál es la mejor manera de hacer un diccionario de listas? Por ejemplo, si tengo listas list1, list2 y quiero hacer un diccionario my_dict así:

my_dict = ['list1': list1, 'list2': list2] 

He encontrado este ejemplo, pero la mejor respuesta está escrita en 2009. ¿Quizás haya algunas formas nuevas más lacónicas de hacer esto?

Necesitas usar corchetes en lugar de corchetes, pero de lo contrario es probable que sea tan bueno como sea:

 list1 = ['a', 'b', 'c'] list2 = [1, 2, 3, 4] my_dict = {'list1': list1, 'list2': list2} 

Para un diccionario de listas, considere un punto por defaultdict .

Un diccionario normal funciona bien, pero genera un error si no se encuentra una clave.

 list1 = list("abcd") list2 = [1, 2, 3, 4] d = {"list1": list1, "list2": list2} d["list3"] # KeyError: 'list3' 

Esto puede ser perjudicial en algunas aplicaciones y puede requerir un manejo adicional de excepciones.

El defaultdict comporta como un dictado normal al tiempo que agrega protección contra errores.

 import collections as ct dd = ct.defaultdict(list) dd.update(d) dd # defaultdict(list, {'list1': ['a', 'b', 'c', 'd'], 'list2': [1, 2, 3, 4]}) 

Agregar una clave faltante llamará a la función predeterminada de fábrica, es decir, a la list . Aquí, en lugar de un error, obtenemos un contenedor vacío:

 dd["list3"] # [] 

Esta entrada fue agregada con una lista vacía.

 dd # defaultdict(list, # {'list1': ['a', 'b', 'c', 'd'], # 'list2': [1, 2, 3, 4], # 'list3': []}) 

Convierta un defaultdict predeterminado a un dict regular estableciendo la fábrica predeterminada en None

 dd.default_factory = None dd # defaultdict(None, {'list1': ['a', 'b', 'c', 'd'], 'list2': [1, 2, 3, 4]}) 

o usando el comando dict() builtin:

 dict(dd) # {'list1': ['a', 'b', 'c', 'd'], 'list2': [1, 2, 3, 4]} 

Si desea convertir el nombre de la variable en una clave, aquí hay una pregunta similar .

Si solo quieres un diccionario de listas con una clave secuencial.

 def turn_to_dict(*args): return {i: v for i, v in enumerate(args)} lst1 = [1, 2, 3, 4] lst2 = [3, 4, 6, 7] lst3 = [5, 8, 9] v = turn_to_dict(lst1, lst2, lst3) >>> print(v) {0: [1, 2, 3, 4], 1: [3, 4, 6, 7], 2: [5, 8, 9]} 

Prueba este método, muy sucinto. Tirantes de rizos, no corchetes.

Creo que ese es el camino más corto a su alrededor.

 list1 = [5, 500, 543] list2 = [4, 4, 4] my_dict = {'list1':list1, 'list2': list2} 

Esto debería funcionar:

 my_dict = dict([('list1', list1), ('list2', list2)]) 

O alternativamente:

 my_dict = {'list1': list1, 'list2': list2} 

El resultado será el mismo.

Use la syntax de corsé para definir el diccionario y asigne a cada entrada de su diccionario una clave que corresponda a cada valor:

 list_a = [1,2,3,4,5] list_b = [6,7,8,9,10] my_dict = {'list1':list_a, 'list2':list_b} 

Más en los documentos de python