Форум сайта python.su
В условии дан List
wmap = [ "WWWW", "-wwW", "X-#W", ]
master_dict = {} /главный словарь map_dict = {} / подсловарь for row in range(len(wmap)): for i in range(wmap[row])): map_dict[i] = wmap[row][i] master_dict[row] = map_dict print(master_dict)
Отредактировано igor110 (Окт. 23, 2017 11:55:33)
Офлайн
igor110Потому что операции со словарями ссылочные. у вас в master_dict три ссылки на один и тот же словать map_dict. поскольку ключи повторяються, то он хранит данные последней итерации.
в map?dict почему-то записывается только последний ряд.
wmap = [ "WWWW", "-wwW", "X-#W", ] master_dict = {} #главный словарь for i, row in enumerate(wmap): master_dict[i] ={} for j, char in enumerate(row): master_dict[i][j]= char print(master_dict)
[code python][/code]
Отредактировано PEHDOM (Окт. 23, 2017 13:57:50)
Офлайн
спасибо большое, PEНDOM.
теперь хоть могу дальше идти по заданию, а то стою 2 дня на первом шаге.
Офлайн
как вариант
wmap = ["WWWW","-wwW","X-#W"] master_dict = {} for key ,val in enumerate(wmap): master_dict[key] = dict([(k,v) for k ,v in enumerate(val)]) print(master_dict)
wmap = ["WWWW","-wwW","X-#W"] master_dict = dict([(key,dict([(k,v) for k ,v in enumerate(val)])) for key ,val in enumerate(wmap)]) print(master_dict )
Отредактировано marvellik (Окт. 23, 2017 18:23:57)
Офлайн