使用for循环填充字典

时间:2020-08-28 10:08:19

标签: python loops dictionary

我想创建一个像这样的字典:

{'area1': ['x1_area1', 'x2_area1'], 'area2': ['x1_area2', 'x2_area2']}

我正在尝试使用for循环:

dict_ ={}
keys =["area1","area2"]
for key in keys : 
    dict_ = {key : ["x1_"+ key,"x2_"+ key]}
    dict_.update(dict_)

但是我得到以下输出:

{'area2': ['x1_area2', 'x2_area2']}

5 个答案:

答案 0 :(得分:4)

尝试一下:

keys =["area1","area2"]
dict_ = {}
for key in keys : 
    dict_[key] = ["x1_"+ key,"x2_"+ key]
    
dict_

答案 1 :(得分:3)

尝试一下

res = {k: [f'{x}_{k}' for x in ('x1', 'x2')] for k in keys}
print(res)

输出:

{'area1': ['x1_area1', 'x2_area1'], 'area2': ['x1_area2', 'x2_area2']}

答案 2 :(得分:1)

在循环中,您正在重新定义dict_,从而覆盖现有值。使用其他变量名称,或仅完全内联其用法:

dict_ = {}
keys = ["area1", "area2"]
for key in keys:
    dict_.update({key : ["x1_" + key, "x2_" + key]})

这将占用您100%以上的代码,并且仅解决特定的问题。对于此问题,还有更好的“ Pythonic”解决方案,在其他答案中对此进行了解释。

答案 3 :(得分:0)

原始代码会覆盖第一个值。

以下代码将更新而不会覆盖:


keys =["area1","area2"]

dict_ = {}
for key in keys :
    x = {key : ["x1_"+ key,"x2_"+ key]}
    dict_.update(x)

# {'area1': ['x1_area1', 'x2_area1'], 'area2': ['x1_area2', 'x2_area2']}
print(dict_)


答案 4 :(得分:0)

在查看如何向字典中添加项目时,似乎dict_[key] = "answer" 是要走的路。

dict_ = {}
keys = ["area1", "area2"]
for key in keys:
    dict_[key] = ["x1_" + key, "x2_" + key]
print(dict_)

https://www.w3schools.com/python/python_dictionaries.asp