Найти - Пользователи
Полная версия: динамическое создание словарей
Начало » Python для новичков » динамическое создание словарей
1
yegorov-p
Привет.

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

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

Буду благодарен за ответы =)
regall
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’.
yegorov-p
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' задается только одна, последняя заданная пара ключ-значение.

Немного сумбурно как-то сказал, но как точнее объяснить я хз =)
regall
d.update({key1:value1, key2:value2, key3:value3, ... })
yegorov-p
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'}}
Итак, каким образом можно добавить пару ключ-значение в словарь, являющийся значением ключа в другом словаре?
yegorov-p
Вопрос исчерпан:
dct='a2'
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