Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 23, 2017 11:35:35

igor110
Зарегистрирован: 2017-10-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Второй день не могу создать словарь с помощью цикла. Помогите.

В условии дан 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 почему-то записывается только последний ряд.

Отредактировано igor110 (Окт. 23, 2017 11:55:33)

Офлайн

#2 Окт. 23, 2017 13:57:33

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Второй день не могу создать словарь с помощью цикла. Помогите.

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)



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Окт. 23, 2017 13:57:50)

Офлайн

#3 Окт. 23, 2017 14:04:54

igor110
Зарегистрирован: 2017-10-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Второй день не могу создать словарь с помощью цикла. Помогите.

спасибо большое, PEНDOM.
теперь хоть могу дальше идти по заданию, а то стою 2 дня на первом шаге.

Офлайн

#4 Окт. 23, 2017 18:14:16

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Второй день не могу создать словарь с помощью цикла. Помогите.

как вариант

 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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version