如何在python中使用for循环创建新字典

如何在python中使用for循环创建新字典,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,假设我有这样的字符串列表 list1 = ["x","y","z"] 那么,如何通过迭代创建空字典,如x={},y={}和z={} 以下方法不起任何作用: for i in list1: i = dict() 请查看以下代码: list1 = ["x","y","z"] for i in list1: globals()[i] = dict() 这将为您提供: x = {} y = {} z = {} 要检查输出及其类型,可以执行以下操作: print(x) print(

假设我有这样的字符串列表

list1 = ["x","y","z"]
那么,如何通过迭代创建空字典,如
x={}
y={}
z={}

以下方法不起任何作用:

for i in list1:
    i = dict()

请查看以下代码:

list1 = ["x","y","z"]
for i in list1:
    globals()[i] = dict()
这将为您提供:

x = {}
y = {}
z = {}
要检查输出及其类型,可以执行以下操作:

print(x)
print(type(x))
print(y)
print(type(y))
print(z)
print(type(z))
按建议


也就是说,您可以将其存储在
dict
中进行存储,然后为每个键关联一个空dict

result = {}
for idx in list1:
    result[idx] = {}

print(result)
# {'x': {}, 'y': {}, 'z': {}}
您可以使用内置功能

例如,
exec(“x=3”)
创建
x
变量,为其赋值
3

您的具体示例可以这样解决:

for var in list1:
    exec(var + "={}")
这里有一个解决方案:

for i in list1:
    locals()[i] = dict()

大多数情况下,不建议动态创建变量名。 检查

我不知道你想做什么,但这是一种可能的方法

list1 = ["x","y","z"]
d = {}

for i in list1:
    d[i] = {}

您将得到一个dict,其中每个字符串都有一个空dict。

这不会创建变量。它将根据他的预期输出给出错误的词典。他想要dict类型的变量。@VaibhavJadhav我知道,但正如我所写的,不推荐使用它,所以我没有提出这个想法,一个处理这个问题的dict更好。问题是作者期望它做什么。提供的方法更好地解决大多数问题<代码>显式优于隐式。它是关于代码生成的,在代码生成中,事情可以比您预期的更进一步。Python不是它的好选择。看看Lisp。不幸的是,这是一个基于强烈意见的声明,不适用于本网站。@mrEvgenX如何创建空字典并不十分明确,他在等待新变量,让我们等待OP给出进一步的细节。这将不会创建变量。它将根据他的预期输出给出错误的词典。他想要dict类型的变量。@VaibhavJadhav我知道这不会返回变量,但可能问题作者并不真的需要变量,这就足够了。答案中有一个争论:你想要新的变量,比如
print(x){}
或索引来访问dict
print(somename['x']){}吗
?您能回答我们吗?因为有些答案是经过投票表决的,所以有一个被接受,而且所有的答案都不一样,我认为这是非常危险的。如果它将成为web应用程序的一部分,并且用户可以发送字符串
var
as
dumpDatabaseWithPasswords();x
。对于家庭作业和五行脚本可以,但99%的情况下不需要。@mrEvgenX完全同意。大多数时候动态创建变量不是一个好主意。我只是想满足用户的特定需求:他要求一种创建新变量的方法(我希望他不会将我的答案用作web应用程序的一部分)