Найти - Пользователи
Полная версия: заполнение словаря
Начало » Python для новичков » заполнение словаря
1
Ynejus
Хочу заполнить словарь словарём, чтобы получилось
{'alex': {'alpha': 10, ‘beta’: 11, ‘gamma’: 12},
‘billy’: {'alpha': 20, ‘beta’: 21, ‘gamma’: 22},
‘charlie’: {'alpha': 30, ‘beta’: 31, ‘gamma’: 32}}

использую такой код:

 qwe = ['alex','billy','charlie']
asd = ['alpha','beta','gamma']
zxc = dict.fromkeys(qwe,dict.fromkeys(asd))
for i in qwe:
    for j in asd:
        zxc[i].update({j: (qwe.index(i)+1)*10 + asd.index(j)})
print(zxc)

но у меня получается:

{'alex': {'alpha': 30, ‘beta’: 31, ‘gamma’: 32},
'billy': {'alpha': 30, ‘beta’: 31, ‘gamma’: 32},
'charlie': {'alpha': 30, ‘beta’: 31, ‘gamma’: 32}}

Подскажите, пожалуйста, что я делаю не так?
xam1816
  
qwe = ['alex','billy','charlie']
asd = ['alpha','beta','gamma']
out ={name: {k: i*10 + j for j, k in enumerate(asd)} for i, name in enumerate(qwe, 1)}
print(out)
Ynejus
А есть ли возможность именно через for .. in : записать?
Просто там есть дополнительные вычисления
xam1816
Ynejus
А есть ли возможность именно через for .. in : записать?
  
for i, name in enumerate(qwe, 1):
    out[name] = {}
    for j, k in enumerate(asd):
        out[name].update({k: i * 10 + j})
Ynejus
xam1816
Спасибо огромное за помощь
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB