我想创建一个像这样的字典:
{'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']}
答案 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_)