Skip to main content
 首页 » 编程设计

python使用for循环更新嵌套字典值与理解

2025年05月04日26Free-Thinker

我正在为这个 for 循环而苦苦挣扎。我想用列表更新嵌套字典的值。以下工作,但我想使用 for 循环来压缩代码。 "status" 是一个嵌套字典,具有外键 "A" 和 "B",以及 binary_list[] 全部为 1。

Trucks = ["A", "B"] 
Days= ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday",     
"Saturday", "Sunday"] 
 
requests={"A": {"Monday":0, "Tuesday":0, "Wednesday":0, "Thursday":0      
                "Friday":0, "Saturday":0, "Sunday":0}, 
          "B": {"Monday":0, "Tuesday":0, "Wednesday":0, "Thursday":0,     
                "Friday":0, "Saturday":0, "Sunday":0}} 
 
 
binary_list=[1,1,1,1,1,1,1,1,1,1,1,1,1,1] 
 
 
 
status["A"]["Monday"]=binary_list[0] 
status["A"]["Tuesday"]=binary_list[1] 
status["A"]["Wednesday"]=binary_list[2] 
status["A"]["Thursday"]=binary_list[3] 
status["A"]["Friday"]=binary_list[4] 
status["A"]["Saturday"]=binary_list[5] 
status["A"]["Sunday"]=binary_list[6] 
 
status["B"]["Monday"]=binary_list[7] 
status["B"]["Tuesday"]=binary_list[8] 
status["B"]["Wednesday"]=binary_list[9] 
status["B"]["Thursday"]=binary_list[10] 
status["B"]["Friday"]=binary_list[11] 
status["B"]["Saturday"]=binary_list[12] 
status["B"]["Sunday"]=binary_list[13] 

我尝试过的:

   for truck in Trucks: 
        for day in Days: 
            requests[truck][day]=[j for j in binary_list] 

这将在列表中生成 14 个 1 作为每一天的值。我明白为什么会这样。这是因为有 2 个 for 循环,所以我想我需要一个嵌套的字典理解来将所有内容都放在一行中。我不确定这是正确的,但以我有限的知识,这似乎是正确的方向。我的问题是我该怎么做?请有人帮忙。感谢你的宝贵时间。

请您参考如下方法:

您可以使用迭代器来迭代 binary_list 的值:

iter_binary_list = iter(binary_list) 
for truck in Trucks: 
    for day in Days: 
        requests[truck][day] = next(iter_binary_list)