Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 16, 2009 22:37:34

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

динамическое создание словарей

Привет.

Начал изучать пайтон несколько дней назад, родился вот такой глупый вопрос: а как динамически создать словари?
К примеру, имеется список вроде
list=
Требуется посоздавать словари с именами a,b,c, ну и потом распечатать их содержимое, просто чтобы проверить, создались они или нет.

Я пробовал набыдлокодить нечто вроде list={} для всех элементов массива, но так, разумеется, не работает. =)

Буду благодарен за ответы =)



Офлайн

#2 Окт. 16, 2009 23:27:51

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

динамическое создание словарей

yegorov-p
list=
Так делать нехорошо, так как list - это тип данных, который по умолчанию в твоей области видимости, при попытке дальше приводить, скажем, множества к спискам,
>>> list = 1
>>> x = set([1,2,3])
>>> list(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>>
ничего не получится.

Я чего-то не сильно вник в суть задачи, но походу имеется в виду это:
>>> lst = ['a','b','c']
>>> d_list = {}
>>> for d_name in lst: d_list.update({d_name:{}})
...
>>> d_list
{'a': {}, 'c': {}, 'b': {}}
>>> d_list['a']
{}
>>>
И не надо создавать кучу именованных переменных, эта тема неоднократно обсуждалась, советую поискать по форуму по словам ‘exec’, ‘eval’.



Отредактировано (Окт. 16, 2009 23:29:47)

Офлайн

#3 Окт. 17, 2009 17:13:59

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

динамическое создание словарей

regall
Я чего-то не сильно вник в суть задачи, но походу имеется в виду это:
>>> lst = ['a','b','c']
>>> d_list = {}
>>> for d_name in lst: d_list.update({d_name:{}})
...
>>> d_list
{'a': {}, 'c': {}, 'b': {}}
>>> d_list['a']
{}
>>>
И не надо создавать кучу именованных переменных, эта тема неоднократно обсуждалась, советую поискать по форуму по словам ‘exec’, ‘eval’.
Да, что-то вроде этого и нужно было. Только сразу возник следущий вопрос: а как добавить несколько элементов во “вложенные” словари?
Грубо говоря, чтобы на выходе было {'a': {'one':1}, ‘c’: {'one':1,'two':2}, ‘b’: {'three':3}} ?
Ведь когда мы делаем d_list.update({d_name:{key=value}}) в цикле, каждому ‘a’,'b','c' задается только одна, последняя заданная пара ключ-значение.

Немного сумбурно как-то сказал, но как точнее объяснить я хз =)



Офлайн

#4 Окт. 17, 2009 20:44:12

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

динамическое создание словарей

d.update({key1:value1, key2:value2, key3:value3, ... })



Офлайн

#5 Окт. 17, 2009 23:55:33

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

динамическое создание словарей

regall
d.update({key1:value1, key2:value2, key3:value3, ... })
Нет, не в этом смысле. =)
Как добавить пару ключ-значение для словаря, вложенного в другой словарь? =)
Ну то есть, к приеру, словарь dct={a:{1:'a1'},b:{1:'b1',2:'b2'}}
Хочу, например, получить dct={a:{1:'a1',2:'a2'},b:{1:'b1',2:'b2'}}
Итак, каким образом можно добавить пару ключ-значение в словарь, являющийся значением ключа в другом словаре?



Офлайн

#6 Окт. 18, 2009 17:35:04

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

динамическое создание словарей

Вопрос исчерпан:
dct='a2'



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version