如何将 for 循环中的值作为字典键的一部分进行计数

How do I counter value in a for loop as part of my dictionary key

我正在尝试创建一个 for 循环,每次循环时都会将键和值添加到字典中。此 for 循环的计数器值是每次添加到字典中的键名的一部分。如何在不为键值定义单独的集合并将它们分配给键值的情况下对此进行编码?或者更好地说,我怎样才能删除这条线? "y.insert(i, "这是钥匙号" + str(i+1))"

这是我当前的代码:

Dic = {}
y = []
for i in range(0,4):
    y.insert(i, "This is key number " + str(i+1))
    Dic[y[i]] = "This is a constant value for all keys"

如果您想坚持使用接近起始 for 循环的内容,只需执行以下操作:

Dic = {}
for i in range(0,4):
    Dic[f"This is key number {i}"] = "This is a constant value for all keys"

你实际上只是 insert 列表最后位置的新项目(你应该使用 append,但那不是重点),只是为了然后得到那个元素列表之外的索引。相反,您可以将它分配给一个临时变量,而无需列表:

Dic = {}
for i in range(0,4):
    x = "This is key number " + str(i+1)
    Dic[x] = "This is a constant value for all keys"

当然,你也不是真的需要那个变量,你可以把表达式放到[...]中(但可能有人会说上面的可读性更高):

Dic = {}
for i in range(0,4):
    Dic["This is key number " + str(i+1)] = "This is a constant value for all keys"

现在可以直接翻译成字典理解:

Dic = {"This is key number " + str(i+1): "This is a constant value for all keys" for i in range(0,4)}

稍微清理后(注意:f 字符串需要较新版本的 Python,但还有其他方法可以将数字格式化为无需连接的字符串):

dic = {f"This is key number {i+1}": "This is a constant value for all keys" for i in range(4)}

可以使用dict的fromkeys()方法:

Dic = dict.fromkeys(map("This is key number {}".format,range(4)),"constant")

print(Dic)
{'This is key number 0': 'constant', 
 'This is key number 1': 'constant', 
 'This is key number 2': 'constant', 
 'This is key number 3': 'constant'}