博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python获取两个dict的不同
阅读量:6414 次
发布时间:2019-06-23

本文共 1287 字,大约阅读时间需要 4 分钟。

参数: dict1, dict2

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

实现:

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_dataif __name__ == "__main__":    dic1 = {        'name': 'test',        'score': 89    }    dic2 = {        'name': 'test',        'score': 29,        'age': 23    }    result = dict_different_data(dic2, dic1)    print result

 

转载地址:http://jgbra.baihongyu.com/

你可能感兴趣的文章
Ubuntu 12.04上享用新版本Linux的功能
查看>>
logstash + grok 正则语法
查看>>
Zimbra开源版(v8.6)安装说明
查看>>
Android性能优化之TraceView和Lint使用详解
查看>>
linux centos7.2 安装mysq,nginx,php
查看>>
myrocks之事务处理
查看>>
基于pgrouting的路径规划之一
查看>>
LBS核心技术解析
查看>>
Fible Channel over Convergence Enhanced Ethernet talk about
查看>>
讨论:今日头条适配方案使用中出现的问题
查看>>
CSS3 3D翻转动画
查看>>
送给即将踏入软考征途的你
查看>>
要命啦!Word中快速录入大全,内含快捷键小技巧,快来一起学习!
查看>>
javascript实现音频mp3播放
查看>>
html5-离线缓存
查看>>
linux系统安装完后的常见工作
查看>>
在Linux服务器、客户端中构建密钥对验证进行远程连接
查看>>
揪出MySQL磁盘消耗迅猛的真凶
查看>>
和“C”的再遇
查看>>
一键安装kubernetes 1.13.0 集群
查看>>