我正在为这个 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)
