python获取两个dict的不同

时间:2014-05-28 21:11:48   收藏:0   阅读:385

参数: dict1, dict2

需求:如果dict1和dict2中有不同的key,那么返回这个(key, dict1[key]);如果dict1和dict2中有相同的key,但是value不同,返回这个(key, dict1[key])

实现:

bubuko.com,布布扣
def dict_different_data(first, second):
    """
    get the different data bewtten two dicts objects
    return :result = first - second

    """
    assert isinstance(first, dict)
    assert isinstance(second, dict)
    different_data = {}
    update_key = set(first).intersection(set(second))
    insert_key = set(first).difference(set(second))
    delet_key =  set(second).difference(set(first))

    #updata data item which are both on first and second  and Not equal values
    for k in update_key:
        if(isinstance(first[k], dict)):
            result = dict_different_data(first[k], second[k])
            if len(result) > 0:
                different_data[k] = result
        elif first[k] != second[k]:
            different_data[k] = first[k]        
    #insert new item from first
    for k in insert_key:
        different_data[k] = first[k]
    #delet data 
    for k in delet_key :
        different_data[k] = None        

    return different_data

if __name__ == "__main__":
    dic1 = {
        name: test,
        score: 89
    }
    dic2 = {
        name: test,
        score: 29,
        age: 23
    }
    result = dict_different_data(dic2, dic1)
    print result
bubuko.com,布布扣

 

python获取两个dict的不同,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!