Python将一个dict拆分为一个dict列表

2024-07-02 13:08:36 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在后端得到一个request.POST时,我想为每个表单创建一个字典

目前,我已经设法通过request.POST.dict()将request.POST(QueryDict)传递给dict,正如我在一些StackOverflow问题中所看到的那样,但是我仍然必须将这个字典转换为字典列表,我不知道如何转换

dict中的每个表单都关联了字符串:formnumber,我想为每个表单创建一个字典

当前dict(简化示例):

{'form-0-a': 'MIE0158', 'form-0-b': 'ABHD12', 'form-0-jief': 'JUGI&', 'form-1-a': 'MIE0158', 'form-1-b': 'ABHD12', 'form-1-jief': 'JUGI&', 'form-2-a': 'MIE0158', 'form-2-b': 'ABHD12', 'form-2-jief': 'JUGI&'}

所需的目录列表:

[{'form-0-a': 'MIE0158', 'form-0-b': 'ABHD12', 'form-0-jief': 'JUGI&'}, {'form-1-a': 'MIE0158', 'form-1-b': 'ABHD12', 'form-1-jief': 'JUGI&'}, {'form-2-a': 'MIE0158', 'form-2-b': 'ABHD12', 'form-2-jief': 'JUGI&'}]

我不熟悉Python,所以我想知道最适合Python的方法是什么


Tags: 字符串form表单列表字典requeststackoverflowpost
2条回答

您可以这样创建字典

dict_1= {'form-0-a': 'MIE0158', 'form-0-b': 'ABHD12', 'form-0-jief': 'JUGI&', 'form-1-a': 'MIE0158', 'form-1-b': 'ABHD12', 'form-1-jief': 'JUGI&', 'form-2-a': 'MIE0158', 'form-2-b': 'ABHD12', 'form-2-jief': 'JUGI&'}

res = {}

for key, value in dict_1.items():
    key_ = key.rsplit('-', 1)[0]
    res.setdefault(key_, {}).update({key:value})

print(list(res.values()))

输出

[{'form-0-a': 'MIE0158', 'form-0-b': 'ABHD12', 'form-0-jief': 'JUGI&'}, {'form-1-a': 'MIE0158', 'form-1-b': 'ABHD12', 'form-1-jief': 'JUGI&'}, {'form-2-a': 'MIE0158', 'form-2-b': 'ABHD12', 'form-2-jief': 'JUGI&'}]
def test_function():
    test = {'form-0-a': 'MIE0158', 'form-0-b': 'ABHD12', 'form-0-jief': 'JUGI&', 'form-1-a': 'MIE0158', 'form-1-b': 'ABHD12',
     'form-1-jief': 'JUGI&', 'form-2-a': 'MIE0158', 'form-2-b': 'ABHD12', 'form-2-jief': 'JUGI&'}

    form_num = 0
    new_dict = {}
    new_list = []
    for num, item in enumerate(test):

        if int(item[5]) == form_num:
            new_dict[item] = test[item]
        else:
            form_num = int(item[5])
            new_list.append(new_dict.copy())
            new_dict = {}

    new_list.append(new_dict.copy())
    print(new_list)

if __name__ == '__main__':
    test_function()

输出

[{'form-0-a': 'MIE0158', 'form-0-b': 'ABHD12', 'form-0-jief': 'JUGI&'}, {'form-1-a': 'MIE0158', 'form-1-b': 'ABHD12', 'form-1-jief': 'JUGI&'}, {'form-2-a': 'MIE0158', 'form-2-b': 'ABHD12', 'form-2-jief': 'JUGI&'}]

相关问题 更多 >