将迭代器连接到变量名



我想调用一个名称中有数字的变量。我认为我最接近的方法是将迭代器连接到名称上,并将其转换为字典,但它不起作用。

这就是我尝试过的:

dict0 = {"pet1":"dog", "pet2":"cat", "pet0":"bird"}
dict1 = {"first":"a", "second":"b", "third":"c"}
dict2 = {"num1":1,"num2":2,"num3":3}
for i in range(3):
tempDict = "dict"+str(i) # type is string
print(dict(tempDict))
output: ValueError: dictionary update sequence element #0 has length 1; 2 is required

这些字典由数据库调用填充,表编号为0,1,2…n。有时我有一个字典,有时我有多个。如果可能的话,能够调用它们并对内容进行迭代操作将非常方便。我不知道该在谷歌上搜索什么答案,提前谢谢。

假设您创建了具有正确名称的变量(在本例中为dict0, dict1, dict2(,则可以使用vars()方法通过其名称获取值

dict0 = {"pet1":"dog", "pet2":"cat", "pet0":"bird"}
dict1 = {"first":"a", "second":"b", "third":"c"}
dict2 = {"num1":1,"num2":2,"num3":3}
for i in range(3):
print(vars()[f"dict{i}"])

这将按预期打印每个dict

如果您想通过字典的变量名访问字典,请尝试以下操作:

dict0 = {"pet1":"dog", "pet2":"cat", "pet0":"bird"}
dict1 = {"first":"a", "second":"b", "third":"c"}
dict2 = {"num1":1,"num2":2,"num3":3}
for i in range(3):
dict_var_name = "dict"+str(i) # type is string
print(globals()[dict_var_name])

globals((返回一个字典,该字典包含全局范围内所有定义的变量。有关这个问题的更多信息,请看这个问题

最新更新