【问题标题】:Creating nested list from dictionary从字典创建嵌套列表
【发布时间】:2021-11-20 17:58:55
【问题描述】:

我无法从字典中创建嵌套列表。我希望任何人都可以帮助我实现我的目标输出,您可以在底部看到它。

我的代码:

data = {
    "abc": [{"cba": "cab", "lmn": "mnl"}],
    "def": [{"fed": "fde", "opq": "poq", "rst": "tsr", "jkl": "klj"}],
    "ghi": [{"xyz": "zxy", "uvw": "vuw"}],
    "etag": "W/ABCDXYZ"
}

dict_list = []
dict_lists = []

for d in data.keys():
    dict_obj = {}
    if isinstance(data[d], list):
        for dl in data[d]:
            dict_obj[d] = dl
            dict_list.append(dict_obj)
    else:
        dict_list.append({d : data[d]})

for dl in dict_list:
    dict_obj = {}
    for do in dl:
        if isinstance(dl[do], dict):
            for v in dl[do].keys():
                dict_obj[do] = { v : dl[do][v] }
                dict_lists.append({ do : dict_obj[do] })
        else:
            dict_lists.append([{ do : dl[do] }])

print(dict_lists)

输出

[{'abc': {'cba': 'cab'}}, {'abc': {'lmn': 'mnl'}}, 
{'def': {'fed': 'fde'}}, {'def': {'opq': 'poq'}}, {'def': {'rst': 'tsr'}}, {'def': {'jkl': 'klj'}}, 
{'ghi': {'xyz': 'zxy'}}, {'ghi': {'uvw': 'vuw'}}, 
[{'etag': 'W/ABCDXYZ'}]]

我的目标是实现下面的输出。

[
[{'abc': {'cba': 'cab'}}, {'abc': {'lmn': 'mnl'}}], 
[{'def': {'fed': 'fde'}}, {'def': {'opq': 'poq'}}, {'def': {'rst': 'tsr'}}, {'def': {'jkl': 'klj'}}], 
[{'ghi': {'xyz': 'zxy'}}, {'ghi': {'uvw': 'vuw'}}], 
[{'etag': 'W/ABCDXYZ'}]
]

【问题讨论】:

    标签: python python-3.x list dictionary for-loop


    【解决方案1】:

    我认为这可以完成工作:

    out = []
    for key, values in data.items():
        lst = []
        if type(values[0]) != dict:
            lst.append({key: values[0]})
        else:
            for k, v in values[0].items():
                lst.append({key: {k: v}})
        out.append(lst)
    
    print(out)
    

    这是输出:

    [
     [{'abc': {'cba': 'cab'}}, {'abc': {'lmn': 'mnl'}}],
     [{'def': {'fed': 'fde'}}, {'def': {'opq': 'poq'}}, {'def': {'rst': 'tsr'}}, {'def': {'jkl': 'klj'}}],
     [{'ghi': {'xyz': 'zxy'}}, {'ghi': {'uvw': 'vuw'}}],
     [{'etag': 'W/ABCDXYZ'}]
    ]
    

    【讨论】:

    • 这太完美了!谢谢!
    • 很高兴我能帮上忙 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2021-04-19
    • 2018-01-16
    • 1970-01-01
    • 2020-10-22
    • 2021-09-15
    相关资源
    最近更新 更多