Python 3.x 如何在python中将变量名和值作为键值对分配给字典

Python 3.x 如何在python中将变量名和值作为键值对分配给字典,python-3.x,Python 3.x,我想获取一个变量和变量值,并将它们附加到字典中: mydict = {} myvar = 5 mydict[myvar] = myvar.value >>> mydict {myvar : 5} 有什么想法吗?正如我在评论中解释的那样,这对于任意变量是不可能的,当然除了硬编码,例如x=5;{'x':x} 可能的情况: 只需使用locals或dir,但您将获得可能不关心的信息,如当前文件路径、导入的模块等 创建特定变量的字典,同时对其名称进行硬编码: x = 1 y = 2

我想获取一个变量和变量值,并将它们附加到字典中:

mydict = {}
myvar = 5
mydict[myvar] = myvar.value

>>> mydict
{myvar : 5}

有什么想法吗?

正如我在评论中解释的那样,这对于任意变量是不可能的,当然除了硬编码,例如x=5;{'x':x}

可能的情况:

只需使用locals或dir,但您将获得可能不关心的信息,如当前文件路径、导入的模块等

创建特定变量的字典,同时对其名称进行硬编码:

x = 1
y = 2
print({var_name: globals()[var_name] for var_name in ['x', 'y']})
# {'x': 1, 'y': 2}
使用有关正在搜索的变量的预定义知识。例如,获取所有定义的int和float的名称:


表达式{myvar:5}中myvar的类型是什么?在您的示例中,myvar是公正且完整的。。。你的意思是mydict['myvar']?mydict['myvar']=myvaryes这个想法就是能够使用变量的名称作为键,然后值可以是int或float。感谢您的帮助这对于任意变量是不可能的。myvar只是一个内存地址的引用,其内容恰好是5。此引用不知道它被称为“myvar”。但是,如果您使用printlocalsprintdir,您可能会感到惊讶,它将提供类似的输出,但作为一个只包含名称而不包含值的列表
a = 1
b = 2
c = 3.0
print({var_name: var_value for var_name, var_value in globals().items() 
       if isinstance(var_value, (int, float))})
# {'c': 3.0, 'a': 1, 'b': 2}