我在理解如何自动嵌套字典方面遇到问题。在脚本中,我需要一个包含字典的字典,该字典包含一个列表。像这样:
week{
1:{
m: [],
l: [],
d: []
},
2:{
m: [],
l: [],
d: []
},
# ...
}
我尝试过的事情:
commands = ["m", "ml", "l", "ld", "d"] # want to use them as keys
week = {}
for d in range(7):
d += 1
week[d] = {}
for t in commands:
day = {}
day[t] = []
week[d] = day
print(week)
# Output:
{1: {'d': []}, 2: {'d': []}, 3: {'d': []}, 4: {'d': []}, 5: {'d': []}, 6: {'d': []}, 7: {'d': []}}
答案 0 :(得分:3)
您正在day
循环中创建for t in commands
字典。尝试这样做:
week[d] = {} # Let this line to be 1
day = {}
for t in commands:
day[t] = []
week[d] = day # If you wrote this line, you don`t need line 1 anymore
答案 1 :(得分:1)
问题在这里:
for t in commands:
day = {}
day[t] = []
week[d] = day
在这里,您正在为command
中的每个键创建一个新的子词典。您只应该为week
中的每个键创建一个字典,这就是您在前一行所做的事情:
week[d] = {}
在内部for循环中,您所需要做的就是添加到字典week[d]
中:
for t in commands:
week[d][t] = []
答案 2 :(得分:-1)
import json
commands = ["m", "ml", "l", "ld", "d"]
weeks = {}
for d in range(1,8):
weeks[d] = {com:[] for com in commands}
print(json.dumps(weeks,indent=4))
{
"1": {
"m": [],
"ml": [],
"l": [],
"ld": [],
"d": []
},
"2": {
"m": [],
"ml": [],
"l": [],
"ld": [],
"d": []
},
"3": {
"m": [],
"ml": [],
"l": [],
"ld": [],
"d": []
},
"4": {
"m": [],
"ml": [],
"l": [],
"ld": [],
"d": []
},
"5": {
"m": [],
"ml": [],
"l": [],
"ld": [],
"d": []
},
"6": {
"m": [],
"ml": [],
"l": [],
"ld": [],
"d": []
},
"7": {
"m": [],
"ml": [],
"l": [],
"ld": [],
"d": []
}
}