Уведомления

Группа в Telegram: @pythonsu

#1 Март 3, 2012 18:26:31

Пытон
От:
Зарегистрирован: 2011-11-27
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Список словарей. Как сделать?

slovar = {"name":"", "dr": "", "predmet":""}
base = []
for n in range(2):
slovar["name"]=input("Введите имя:")
slovar["dr"]=input("Введите дату рождения:")
slovar["predmet"]=input("Введите любимую вещь:")
base.append(slovar)

print (base)
При таком раскладе получится список с двумя ссылками на один и тот же словарь в котором будут данные, которые пользователь внёс последними. Как же получить список словарей с различными данными, с ссылками в списке на разные словари? Что-то я не соображу. Или я, может быть, вообще совсем не так пытаюсь сделать подобный паскалевскому массив из записей (record)?

п.с. ну и ме-е-е-е-е-е-е-е-е-е-е-едленно же работает ваш сайт! Загружен запросами по самое не балуйся, что ль?



Офлайн

#2 Март 3, 2012 19:05:18

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2840
Репутация: +  186  -
Профиль   Отправить e-mail  

Список словарей. Как сделать?

base.append(slovar.copy())



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Март 4, 2012 14:11:06

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Список словарей. Как сделать?

base = []
for n in range(2):
slovar = {}
slovar["name"]=input("Введите имя:")
slovar["dr"]=input("Введите дату рождения:")
slovar["predmet"]=input("Введите любимую вещь:")
base.append(slovar)

print (base)
..bw



Офлайн

#4 Март 4, 2012 14:44:43

Пытон
От:
Зарегистрирован: 2011-11-27
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Список словарей. Как сделать?

Cпасибо ответившим.
Я пока что воспользовался модулем copy и его функцией deepcopy для создания полностью отдельной копии словаря. А то метод copy, как заявляет моя книга, делает лишь “поверхностную” копию. Т.е. если словарь содержит какой-нибудь вложенный список, то он-то и не будет являться полной копией в создаваемом дубликате, а будет ссылкой на этот список из словаря, который дублируют.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version