Estoy intentando crear una función que convertirá una lista dada en un diccionario dado (donde puedo especificar / asignar valores si lo deseo).
Así, por ejemplo, si tengo una lista
['a', 'b', 'c', ..., 'z']
y quiero convertir a un diccionario como este
{1: 'a', 2: 'b', 3: 'c', ..., 26: 'z'}
Sé cómo hacerlo utilizando un diccionario de comprensión.
{num : chr(96 + num) for num in range(1, 26)}
pero no puedo imaginar cómo convertir esto en una función más generalizada que podría convertir cualquier lista en un diccionario. ¿Cuál es el mejor enfoque aquí?
Pase la lista enumerated
a dict
constructor
>>> items = ['a','b','c'] >>> dict(enumerate(items, 1)) >>> {1: 'a', 2: 'b', 3: 'c'}
Aquí enumerate(items, 1)
producirá una tuple
de elemento y su índice. Los índices comenzarán desde 1
( observe el segundo argumento de enumerate
). Usando esta expresión puedes definir una función en línea como:
>>> func = lambda x: dict(enumerate(x, 1))
Invocalo como
>>> func(items) >>> {1: 'a', 2: 'b', 3: 'c'}
O una función regular
>>> def create_dict(items): return dict(enumerate(items, 1))
Si las claves son solo el índice del elemento en la list
, como en su ejemplo:
{i+1: x for i, x in enumerate(mylist)}
Iterar a través de la lista y asignar cada valor a un número (comenzando desde 1
).
def list_to_dict(items): return {n + 1: items[n] for n in range(len(items))}
Reemplace n + 1
con n
si desea que el diccionario comience desde cero.