zoukankan      html  css  js  c++  java
  • 两个字典增量部分

    
    def get_increment_between_two_dict(item_old, item_new):
        """
        比较两个字典,并返回增量部分
        :param dict_old = {"a":{"a_1":"haha","a_2":[1,2,3],"a_3":10},"b":{"b_1":"an","b_2":10},
                            'd':{"d_1":[1,2,3],"d_2":(7,8), "d_3":{"a","b"}}}
    
        :param dict_new =  {"a":{"a_1":"hehe","a_2":[1,2,3],"a_3":30},"b":{"b_1":"an","b_2":10},
                        "c":{"c_1":{"c_1_1":"3"},"c_2":10},'d':{"d_1":[1,2,3,4],"d_2":(8, 9),"d_3":{"a","b","c"}}}
    
        :return: {"a":{"a_1":"hehe","a_3":30},"c":{"c_1":{"c_1_1":"3"},"c_2":10}, 'd':['d_1':[4], 'd_2':(9,),'d_3':{'c'}}
        """
    
        if isinstance(item_old, dict) and isinstance(item_new, dict):
            increment_dict = {}
            for key in item_new:
                if key not in item_old:
                    increment_dict[key] = item_new[key]
                else:
                    result = get_increment_between_two_dict(item_old[key], item_new[key])
                    if result:
                        increment_dict[key] = result
            return increment_dict
    
        else:
            if isinstance(item_old, list) and isinstance(item_new, list):
                return list(set(item_new) - set(item_old))
            elif isinstance(item_old, tuple) and isinstance(item_new, tuple):
                return tuple(set(item_new) - set(item_old))
            elif isinstance(item_old, set) and isinstance(item_new, set):
                return item_new - item_old
            elif item_old != item_new:
                return item_new
            return None
    
    
  • 相关阅读:
    Shell 基本运算符
    如何将mongo查询结果导出到文件中
    python如何将自己写的代码打包供他人使用
    json格式化
    如何在linux安装ruby2.2.2+
    如何对字符串进行码表替换转码--加密encode
    git基础
    如何创建redis集群
    linux安装python2.7
    如何在windows和linux搭建django环境
  • 原文地址:https://www.cnblogs.com/jijizhazha/p/11163851.html
Copyright © 2011-2022 走看看