2014-02-04 6 views
0
#!/usr/bin/python 
count=3 

for i in range(0,count): 
    dict[i]= {} 

Здесь я хочу создать 3 (так как count = 3) словари, такие как dict1, dict2, dict3.Как создать динамические словарные имена

+2

Почему вы хотите это сделать? В любом месте, где вы, возможно, захотите написать 'dict1', вы можете вместо этого написать' dict [0] '(хотя использование имени' dict' является сомнительным, так как это имя типа). –

+0

@Marcelo Cantos Позже я вставлю и добавлю значения (здесь я возьму списки) до одного значения ключа. И многие другие манипуляции, которые я хочу использовать для этих диктонов, созданных здесь. – user3197309

+0

Это не объясняет, почему вы не можете просто использовать один диктофон dicts, как вы пытались сделать выше. –

ответ

-3

Вы можете сделать Somthing так:

count = 3 
for i in range(0, count): 
    exec("dict%d = %s" % (i + 1, {})) 
print dict1 
print dict2 

выход: {} {}

+0

почему -1 и -2? если у кого-то есть другое решение, опубликуйте его, если нет, поэтому нет причин делать эти вещи. если я ошибаюсь, скажите мне правильное решение. –

+2

Я не голосовал, но это ужасная практика и даже не работает в функции, а не в Python 3. В Python 2 она отключает важные оптимизации для пространства имен локальных функций. –

+1

@MartijnPieters спасибо, мы здесь, чтобы учиться друг у друга :) –

1

Вам не нужно кучу переменных. Вы можете просто использовать массив dicts. Вы почти поняли это в своем коде. Вот правильный вариант: (!)

#!/usr/bin/python 
count=3 

d = [{} for _ in range(count)] 

# Instead of dict1/2/3, use d[0/1/2]. 
0

Если по какой-либо причине вы действительно хотите иметь одиночные переменные для словарей (dict1, dict2, ...), то вы можете сделать следующее:

>>> count=3 
>>> for i in range(0,count): 
...  locals()['dict{}'.format(i)] = {} 
... 
>>> dict1 
{} 

locals()['dict{}'.format(i)] = {} добавит локальную переменную с именем 'dir {count}' и присвоит ей значение. locals() показывает локальные переменные и их значения.

Помните: сделайте это, только если вы действительно знаете, что делаете. Прочтите также примечание к locals в «Python documentation»: «Содержание этого словаря не должно изменяться, изменения могут не влиять на значения локальных и свободных переменных, используемых интерпретатором».

Смежные вопросы