<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          超實用!深度比較Python對象之間的差異

          共 2863字,需瀏覽 6分鐘

           ·

          2022-08-09 04:21

          添加微信號"CNFeffery"加入技術(shù)交流群

          ?

          本文完整示例代碼及文件已上傳至我的Github倉庫https://github.com/CNFeffery/PythonPracticalSkills

          ?

          這是我的系列文章「Python實用秘技」的第10期,本系列立足于筆者日常工作中使用Python積累的心得體會,每一期為大家?guī)硪粋€幾分鐘內(nèi)就可學會的簡單小技巧。

          作為系列第10期,我們即將學習的是:深度比較Python對象間差異。

          很多情況下我們需要對兩條數(shù)據(jù)之間的差異進行比較,如果僅僅是針對數(shù)值型對象,那么兩者的差值就是所謂的差異,但是如果要比較兩條JSON數(shù)據(jù)間的差異呢?

          由于JSON數(shù)據(jù)具有可嵌套可分層的特點,想要明確找出兩條JSON數(shù)據(jù)間的差異并加以描述,如果自己書寫方法還是有些費事。這種情況我們就可以使用到第三方庫deepdiff中的DeepDiff()方法,它基于遞歸對不同對象進行深度比較。

          使用pip install deepdiff完成安裝之后,通過from deepdiff import DeepDiff導入所需功能,就可以直接對兩個JSON對象之間的差異進行比較,下面是一個簡單的例子:

          from deepdiff import DeepDiff

          obj1 = {
              'level1': [
                  {
                      'level1-1'1,
                      'level1-2'1,
                      'level1-3': [
                          {
                              'level1-3-1': [123]
                          }
                      ]
                  }
              ],
              'level2''a'
          }

          obj2 = {
              'level1': [
                  {
                      'level1-1'1,
                      'level1-2'1,
                      'level1-3': [
                          {
                              'level1-3-1': [121]
                          }
                      ]
                  }
              ],
              'level2''b'
          }

          DeepDiff(obj1, obj2)

          可以看到打印的檢測結(jié)果中具體聲明了差異內(nèi)容及具體位置,可以幫助我們開展后續(xù)其他處理。

          除此之外,deepdiff還具有非常豐富的額外功能,譬如忽略對指定類型數(shù)據(jù)的比較檢查:

          亦或是通過定義層次規(guī)則,令DeepDiff()跳過對指定位置元素的差異檢查:

          還支持利用正則表達式定義要忽略的模糊層次規(guī)則,譬如下面的例子中我們使用正則批量忽略了多個鍵值對:

          限制針對浮點數(shù)的檢查精度,譬如下面的例子中限定significant_digits=2后,小數(shù)點后第二位以后的差異便被忽略:

          更多用法,感興趣的讀者朋友可以移步https://zepworks.com/deepdiff/5.8.2/diff.html了解更多。


          本期分享結(jié)束,咱們下回見~??

          加入知識星球【我們談?wù)摂?shù)據(jù)科學】

          500+小伙伴一起學習!








          · 推薦閱讀 ·

          Python中更好用的函數(shù)運算緩存

          不只是快,詳解geopandas新版文件讀寫

          純Python開發(fā)在線GeoJSON數(shù)據(jù)生成器


          瀏覽 67
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美日韩国产在线手机 | 中国免费看毛片 | 免费电影、欧美色图、亚洲色图 | 亚洲无码免费视频 | 小h片网站 |