簡體   English   中英

如何通過循環將字典和列表嵌套到字典中?

[英]How to nest dictionary and list to a dictionary through a loop?

我在理解如何自動嵌套字典時遇到問題。 在腳本中,我需要一個包含包含列表的字典的字典。 像這樣:

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

您正在for t in commands循環中的for t in commands創建day字典。 嘗試這樣做:

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

問題在這里:

for t in commands:
    day = {}
    day[t] = []
    week[d] = day

在這里,您正在為command每個鍵創建一個新的子詞典。 您應該只為week每個鍵創建一個字典,這就是您之前所做的:

week[d] = {}

在內部 for 循環中,您需要做的就是添加到字典week[d]

for t in commands:
    week[d][t] = []
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": []
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM