Создать имя переменной из двух строк в Python

python python-2.7

6417 просмотра

3 ответа

Я ищу, чтобы создать имя переменной из двух строк в Python, например:

 a = "column_number"
 b = "_url1"

а затем сможет получить имя переменной, "column_number_url1"которую я могу использовать.

Я ценю это, вообще говоря, не является хорошей идеей - есть многочисленные сообщения , которые идут в то, почему это плохая идея (например Как создать переменное число переменных? , Создание нескольких переменных ) - В основном я хочу , чтобы быть в состоянии сделать Это потому, что все эти переменные определены в другом месте кода и хотят иметь простой способ получить к ним доступ (т.е. вместо того, чтобы создавать тысячи уникальных переменных, для которых, я согласен, словарь и т. д. было бы лучше) ,

Насколько я могу судить, ответы в других постах, которые я нашел, - это все альтернативные способы сделать это, а не то, как создать имя переменной из двух строк.

Автор: kyrenia Источник Размещён: 12.11.2019 09:02

Ответы (3)


11 плюса

Решение
>>> a = "column_number"
>>> b = "_url1"
>>> x = 1234
>>> globals()[a + b] = x
>>> column_number_url1
1234

Причина, по которой не так много сообщений, объясняющих, как это сделать, заключается в том, что (как вы, возможно, уже поняли) это не очень хорошая идея . Я гарантирую, что ваш вариант использования не является исключением.

Если вы не заметили, globals()по сути это словарь глобальных переменных. Что подразумевает, что вы должны использовать словарь для этого все время;)

Автор: Joel Cornett Размещён: 31.03.2015 04:32

1 плюс

Как альтернатива ответу Джоэла, словарь был бы намного лучше:

a = "column_number"
b = "_url1"
data = {}

data[a+b] = 42
Автор: Finwood Размещён: 31.03.2015 04:34

1 плюс

Вы можете использовать словарь:

a = "column_number"
b = "_url1"
obj = {}
obj[a+b] = None
print obj #{"column_number_url1": None}

Кроме того, вы можете использовать eval, но не забывайте всегда следить за использованием eval/ exec:

a = "column_number"
b = "_url1"
exec(a+b+" = 0")
print column_number_url1 #0

eval это зло

Автор: A.J. Uppal Размещён: 31.03.2015 04:37
Вопросы из категории :
32x32