首页 > 解决方案 > 如何在python中从不同长度的列表创建字典

问题描述

我有一个这样的 x 列表:

x =[[[1, 2]], [[2, 1], [2, 3]], [[3, 2]], [[4, 7, 6, 5]]]

我尝试在最终结果中创建一个字典列表,如下所示:

dict_list = [{"user_idx": 1, "partner_1": 2}, {"user_idx": 2, "partner_1": 1, "partner_2": 3}, 
            {"user_idx": 3, "partner_1": 2}, {"user_idx": 4, "partner_1":7, "partner_2": 6,"partner_3":5}]

如何用 python 代码完成它?

标签: pythonlistdictionary

解决方案


尝试:

x =[[[1, 2]], [[2, 1], [2, 3]], [[3, 2]], [[4, 7, 6, 5]]]

out = {}
for g in x:
    for subl in g:
        out.setdefault(subl[0], []).extend(subl[1:])

out = [
    {
        "user_idx": k,
        **{"partner_{}".format(idx): i for idx, i in enumerate(v, 1)},
    }
    for k, v in out.items()
]
print(out)

印刷:

[
    {"user_idx": 1, "partner_1": 2},
    {"user_idx": 2, "partner_1": 1, "partner_2": 3},
    {"user_idx": 3, "partner_1": 2},
    {"user_idx": 4, "partner_1": 7, "partner_2": 6, "partner_3": 5},
]

推荐阅读