Найти - Пользователи
Полная версия: Второй день не могу создать словарь с помощью цикла. Помогите.
Начало » Центр помощи » Второй день не могу создать словарь с помощью цикла. Помогите.
1
igor110
В условии дан List
 wmap = [
        "WWWW",
        "-wwW",
        "X-#W",
    ]
хочу его через циклы привести к словарю, в которых к главным ключам привязаны словари.

{0: {0:'W', 1:'W', 2:'W', 3:'W'} , 1: {0:'-', 1:'w', 2:'w', 3:'W'}, 2: {0:'X', 1:'-', 2:'#', 3:'W'} }

мне это нужно чтобы обращаться к конкретному символу через 2 ключа..
в лучшем из моих вариантов получился такой, где внутреннее выражение равно последней строке.
{0: {0:'X', 1:'-', 2:'#', 3:'W'} , 1: {0:'X', 1:'-', 2:'#', 3:'W'}, 2: {0:'X', 1:'-', 2:'#', 3:'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)
рез -т : {0: {0:'X', 1:'-', 2:'#', 3:'W'} , 1: {0:'X', 1:'-', 2:'#', 3:'W'}, 2: {0:'X', 1:'-', 2:'#', 3:'W'} }
в map?dict почему-то записывается только последний ряд.
PEHDOM
igor110
в map?dict почему-то записывается только последний ряд.
Потому что операции со словарями ссылочные. у вас в master_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)
igor110
спасибо большое, PEНDOM.
теперь хоть могу дальше идти по заданию, а то стою 2 дня на первом шаге.
marvellik
как вариант
 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 )
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