LINUX.ORG.RU

Python из словаря сделать локальные переменные


0

1

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

my_dict = { "var1": "val1", "var2": "val2" }
for key,val in my_dict.items()
    locals()[key] = val


Неправильно вообще такое делать.

anonymous ()

способ, в общем-то, правильный, можно еще через __dict__.
но если это не чисто академический вопрос, а ты такое используешь в программе, то ты что-то делаешь неправильно.

iSlava ()
Ответ на: комментарий от iSlava

Суть в чем. Возможно мне нужно было написать в ветку Web, но мне что нужно: Я использую bottle.py для Веб-девелопинга, так вот, я передаю шаблону словарь и вместо того чтобы писать например:

<a href="{{my_dict['href']}}">{{my_dict['caption']}}</a>
я бы написал так:
%for key,val in my_dict.items():
    %locals()[key] = val
<a href="{{href}}">{{caption}}</a>

malya ()
Ответ на: комментарий от malya
def buy(**kwargs):
    for key, value in kwargs.items():
        print key, value

to_buy_list = {'fruits': {'bananas':2, 'apples':10, 'oranges':22},
	       'weapons': {'AK47': 7, 'M4': 2, 'M16': 5 }}

buy(**to_buy_list)
beka ()
Ответ на: комментарий от malya

а если мне нужно передать список словарей, как быть?

a = {'1' : 1, '2' : 2}
b = {'3' : 3, '4' : 4}
c = {'5' : 5, '6' : 6}

dicts = (a, b, c)

result = dict(reduce(lambda a, b: a + b, [i.items() for i in dicts]))
# result = {'1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6}
anonymous ()
Ответ на: комментарий от anonymous

Всем большое спасибо за содержательные ответы!

malya ()
Ответ на: комментарий от anonymous

извращенец Вы батенька...

 
dict( sum([ i.items() for i in (a,b,c)], []) ) 

Если один и тот же аргумент встречается в неск словарях, актуальным будем последнее значение.

А вообще в экспорте словаря в какую-то область видимости ничего плохого нет.

AIv ★★★★★ ()
Ответ на: комментарий от baverman

ТС, слушай - что тебе baverman говорит. Он (baverman) грамотный, книжки читает.

pacify ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.