开发者社区> 问答> 正文

创建带有两个字典的嵌套字典

我有一个称为多的嵌套列表:

[[14, 77766 ,[2, 2]],
 [15, 77766,  [1, 2]],
 [70, 88866, [1, 5]],
 [71, 88866,[2, 5]],
 [72, 88866, [5, 5]],
 [73, 88866, [4, 5]],
 [74, 88866, [3, 5]],
 [79, 99966, [1, 2]],
 [80, 99966, [2, 2]]] 

我需要我的输出是:

{77766:  {14:2 ,15:1} , 88866: {70:1, 71:2, 72:5, 73:4, 74:3}, 99966: {79:1, 80:2}}

我编写了产生以下两个词典的代码。如何结合它们以实现所需的输出?

a = {77766: [14, 15], 88866: [70, 71, 72, 73, 74], 99966: [79, 80]}



b = {14: 2, 15: 1, 70: 1, 71: 2, 72: 5, 73: 4, 74: 3, 79: 1, 80: 2}

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 12:28:09 492 0
1 条回答
写回答
取消 提交回答
  • 您可以在此处使用defaultdictmulti不需要排序。

    from collections import defaultdict
    out=defaultdict(dict)
    for v,k,vs in multi:
        out[k]={\*out[k],\*{v:vs[0]}}
    

    *输出 defaultdict(dict, {77766: {14: 2, 15: 1}, 88866: {70: 1, 71: 2, 72: 5, 73: 4, 74: 3}, 99966: {79: 1, 80: 2}})

    编辑

    排序内部字典。

    out={k:dict(sorted(v.items(),key=lambda x:x[1])) for k,v in out.items()}
    

    输出:

    {77766: {15: 1, 14: 2},
     88866: {70: 1, 71: 2, 74: 3, 73: 4, 72: 5},
     99966: {79: 1, 80: 2}}
    

    回答来源:stackoverflow

    2020-03-24 12:28:16
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载