辉煌仪奇 2021-09-30 09:34 采纳率: 47.4%
浏览 183
已结题

python 字典数据累加

我有一组数据,有一个字典数据如下

b = {
    1: {
        11: {
            111: 150,
            112: 151,
            113: 152,
        },
        12: {
            121: 160,
            122: 161,
            123: 162,
        },
    },
    2: {
        21: {
            211: 0,
            212: 1,
            213: 1,
        },
        22: {

            211: 0,
            212: 1,
            213: 1,
        },

    },
}

现在我需要一个方法,实现这样一个功能,随便传入一个key,返回该key下面所有子key的数据累计额和,如果该key是最后一级则返回该key值,如果没有改key值,则返回None

  • 写回答

3条回答 默认 最新

  • 江天暮雪丨 2021-09-30 10:22
    关注

    勉强算是实现了,需要进行更多样本测试

    def custom_sum(obj):
         """
        返回一个嵌套字典的所有值的和
        :param obj: dict  or int
        :return: summary
        """
        if isinstance(obj, dict):
            summary = 0
            for v in obj.values():
                summary += custom_sum(v)
            return summary
        else:
            return obj
    
    
    def search(dic: dict, key: int):
        """
       指定键进行多层嵌套的字典搜索
        """
        if not isinstance(dic, dict):
            return None
        print("Current dict:")
        print(dic)
        value = dic.get(key)
        if value:
            return custom_sum(value)
        else:
            for v in dic.values():
                result = search(v, key)
                if result:
                    return result
            return None
    
    
    # print(search(b, 1111))
    # print(search(b, 111))
    # print(search(b, 11))
    print(search(b, 1))
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月30日
  • 已采纳回答 9月30日
  • 创建了问题 9月30日

悬赏问题

  • ¥15 vue2中使用计算属性
  • ¥50 远程桌面打开Mastercam、没有许可证、物理机打开正常
  • ¥15 ubuntu安装gdal后java读取tif文件报错
  • ¥15 请问lammps怎么做两种金属连接的原子浓度分布图
  • ¥15 求jacquard数据集
  • ¥15 w10部分软件不能联网
  • ¥15 关于安装hbase的问题(操作系统-windows)
  • ¥15 novnc连接pve虚拟机报错安全协议不支持262
  • ¥15 设备精度0.03给多少公差能达到CPK1.33
  • ¥15 qt+ffmpeg报错non-existing PPS 0 referenced