为了账号安全,请及时绑定邮箱和手机立即绑定

使用 for 循环填充字典

使用 for 循环填充字典

素胚勾勒不出你 2023-06-27 14:21:48
我想创建一个如下所示的字典:{'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 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

尝试一下:


keys =["area1","area2"]

dict_ = {}

for key in keys : 

    dict_[key] = ["x1_"+ key,"x2_"+ key]

    

dict_


查看完整回答
反对 回复 2023-06-27
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超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']}


查看完整回答
反对 回复 2023-06-27
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

在循环内,您将重新定义dict_并覆盖现有值。使用不同的变量名称,或者完全内联其用法:


dict_ = {}

keys = ["area1", "area2"]

for key in keys:

    dict_.update({key : ["x1_" + key, "x2_" + key]})

这会占用 100% 以上的代码并仅修复特定问题。对于这个问题有更好、更“Pythonic”的解决方案,其他答案对此进行了解释。




查看完整回答
反对 回复 2023-06-27
?
UYOU

TA贡献1878条经验 获得超4个赞

原始代码覆盖第一个值。


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



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_)


查看完整回答
反对 回复 2023-06-27
?
慕神8447489

TA贡献1780条经验 获得超1个赞

当考虑如何向字典添加项目时,这似乎dict_[key] = "answer" 是正确的选择。


dict_ = {}

keys = ["area1", "area2"]

for key in keys:

    dict_[key] = ["x1_" + key, "x2_" + key]

print(dict_)

查看完整回答
反对 回复 2023-06-27
  • 5 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信