创建以键作为变量名的 Python 字典的简写

Gus*_*pes 6 python python-3.x

在 javascript 中,您可以通过以下方式创建对象:

const a = 5;
const b = 10;

const c = {a, b};
// This will make c = {a: 5, b: 10}
Run Code Online (Sandbox Code Playgroud)

Python中有这样的“简写”吗?

到目前为止,我必须做:

a = 5
b = 10

c = {'a': a, 'b': b}
Run Code Online (Sandbox Code Playgroud)

小智 0

在这种特定情况下,答案是“否”,因为示例中的 a 和 b 是 __main__ 或其他模块中 int 对象的标签。a 没有任何类似于属性“a”的内容。

然而,更接近您想要的东西是可能的,尽管它肯定接近肮脏的黑客,具体取决于您正在做什么。例如,如果从 main 运行:

a = 5
b = 10
c = {i : eval(i) for i in dir() if "_" not in i}
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为“a”和“b”(即名称/标签)确实存在于更高的对象中,即 __main__ 或您的模块中。您需要过滤器来排除其他隐藏属性。从使用 dir() 开始,这个例子由于很多原因都非常 hacky,但该原理在更合适的情况下会起作用,例如当 a 和 b 是较低对象的属性时。然而,在这些情况下,我无法想象你为什么要这样做,因为你基本上已经拥有了那本字典。

所以这在 python 中相当困难的原因实际上是因为根本没有必要这样做。