如何通过循环嵌套字典并列出字典?

时间:2020-02-08 12:41:02

标签: python python-3.x dictionary

我在理解如何自动嵌套字典方面遇到问题。在脚本中,我需要一个包含字典的字典,该字典包含一个列表。像这样:

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': []}}

3 个答案:

答案 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": []
    }
}
相关问题