Можно ли назначить переменную в качестве значения в словаре (для Python)? - PullRequest
0 голосов
/ 15 апреля 2020

для переменных 'a' и 'b' в словаре 'dict1' возможно ли позднее вызвать переменную 'a', используя ее ключ, указанный в 'dict1', чтобы присвоить ей значение ??

 a=""
 b=""
 dict1= {0:a,1:b}

    dict1[0] = "Hai"    #assign a value to the variable using the key

    print(a)            #later call the variable``` 

Ответы [ 4 ]

0 голосов
/ 15 апреля 2020

Мы можем сделать это, используя два словаря с одинаковым количеством переменных:

Это позволяет получить доступ к переменной «a» с помощью ключа «0», а затем изменить ее значение с помощью «dict2» и более поздних версий. получить значение, вызвав 'a'.

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

 dict1= {0:'a',1:'b'}
 dict2={'a':'x','b':'y'}

 dict2[dict1[0]]="Hai"    #assign a value to the variable using the key

 print(dict2['a'])          #later call the variable ````




0 голосов
/ 15 апреля 2020

Переменная не устанавливается автоматически, что вы можете сделать:

def update_dic(a,b):
   dict1={0:a, 1:b}
   return dict1

def update_vars(dict1):
   return dict1[0],dict1[1]

Каждый раз, когда вы вызываете первую функцию, ваш словарь обновляется, и во второй раз вы всегда получаете a и b обратно ,

0 голосов
/ 15 апреля 2020

Вы можете сделать нечто подобное, используя класс для хранения ваших переменных и словарь индексации:

class Variables():
    def __init__(self):
        self.varIndex = dict()

    def __getitem__(self,index):
        return self.__dict__[self.varIndex[index]]

    def __setitem__(self,index,value):
        self.__dict__[self.varIndex[index]] = value

variables = Variables()

variables.a = 3
variables.b = 4
variables.varIndex = {0:"a",1:"b"}
variables[0] = 8
print(variables.a) # 8
0 голосов
/ 15 апреля 2020

Нет, когда вы выполняете присваивание {key: value}, значение не ссылается на исходную переменную, поэтому изменение одного из них не повлияет на другое.

...