Estoy tratando de crear un diccionario que contenga claves de una lista enumerada que asignará el valor enumerado como clave a los valores de la lista.

import string

dic = string.ascii_lowercase
s_dic = []
n_dic = {}    ## New Dictionary to contain numbers:letters

for i in dic:
    s_dic.append(i)  
for number, letter in enumerate(s_dic, start=1):
    print(number, '=', letter)

He usado print solo para probar que el código funcionó. El resultado es el esperado:

1 = a
2 = b
3 = c
4 = d
5 = e
6 = f
7 = g
8 = h
9 = i
10 = j
11 = k
12 = l
13 = m
14 = n
15 = o
16 = p
17 = q
18 = r
19 = s
20 = t
21 = u
22 = v
23 = w
24 = x
25 = y
26 = z

Quiero que n_dic contenga {1:a, 2:b etc}

1
Barb 28 sep. 2019 a las 22:35

3 respuestas

La mejor respuesta

Iiuc puedes probar

n_dic = {i: v for i, v in enumerate(s_dic, start=1)}

Que es una forma estándar de inicializar un diccionario y se llama comprensión del diccionario .

3
SpghttCd 28 sep. 2019 a las 19:40

Esto es lo que podrías querer

import string
dic = string.ascii_lowercase 
s_dic = [] 
n_dic = {} ## New Dictionary to contain numbers:letters 
for i in dic: 
     s_dic.append(i)

id = 0
for letter in s_dic:
     id = id + 1
     n_dic[id] = letter
0
JayPeerachai 28 sep. 2019 a las 19:42

Puedes crear un diccionario directamente desde enumerate

n_dic = dict(enumerate(s_dic, start=1))

>>> s_dic = list('abcdefg')
>>> dict(enumerate(s_dic, start=1))
{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f', 7: 'g'}

O incluso (gracias a @SayandipDutta)

dic = string.ascii_lowercase
dict(enumerate(dic, start=1))
2
splash58 28 sep. 2019 a las 21:37
58149680