最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中g(shù)lom用法的實現(xiàn)

 更新時間:2025年06月04日 09:36:04   作者:Code_Geo  
glom是Python庫,用于簡化嵌套數(shù)據(jù)操作,支持路徑訪問、數(shù)據(jù)轉(zhuǎn)換、容錯處理,下面就來介紹一下glom用法,具有一定的參考價值,感興趣的可以了解一下

glom

glom 是 Python 中一個用于簡化嵌套數(shù)據(jù)結(jié)構(gòu)操作的庫,它的核心目標是讓開發(fā)者以更直觀、簡潔的方式處理和轉(zhuǎn)換復(fù)雜的字典、列表或?qū)ο笄短讛?shù)據(jù)

1. 核心功能?

(1) 路徑式數(shù)據(jù)訪問?

無需多層嵌套的 get() 或循環(huán),直接通過路徑表達式訪問深層數(shù)據(jù)

from glom import glom

data = {
    "user": {
        "name": "Alice",
        "address": {
            "city": "Shanghai",
            "zip": 200000
        }
    }
}
# 傳統(tǒng)方式:多層 get() 或鍵訪問
city = data["user"]["address"]["city"]
# glom 方式:路徑表達式
city = glom(data, "user.address.city")  # 輸出 "Shanghai"

(2) 數(shù)據(jù)轉(zhuǎn)換與結(jié)構(gòu)重組?

將原始數(shù)據(jù)按需轉(zhuǎn)換為新的結(jié)構(gòu)

target_spec = {
    "username": "user.name",
    "location": ("user.address.city", str.upper)  # 對值進行處理
}

result = glom(data, target_spec)
# 輸出:{'username': 'Alice', 'location': 'SHANGHAI'}

(3) 容錯處理?

自動處理路徑缺失或異常,避免 KeyError 或 TypeError

from glom import Coalesce

# 如果路徑不存在,返回默認值
result = glom(data, Coalesce("user.age", default=18))

2. 主要應(yīng)用場景?

?(1) 處理 API 響應(yīng)?

簡化 JSON 數(shù)據(jù)的提取和轉(zhuǎn)換

api_response = {
    "data": {
        "items": [
            {"id": 1, "title": "Item 1"},
            {"id": 2, "title": "Item 2"}
        ]
    }
}
# 提取所有標題
titles = glom(api_response, ("data.items", ["title"]))
# 輸出:['Item 1', 'Item 2']

(2) 數(shù)據(jù)清洗?

將原始數(shù)據(jù)轉(zhuǎn)換為規(guī)范化的結(jié)構(gòu)

raw_data = {
    "name": "Bob",
    "details": {"age": 30, "email": "bob@example.com"}
}

spec = {
    "full_name": "name",
    "contact": "details.email",
    "metadata": ("details", {"age": "age"})
}

cleaned = glom(raw_data, spec)
# 輸出:{'full_name': 'Bob', 'contact': 'bob@example.com', 'metadata': {'age': 30}}

(3) 復(fù)雜對象操作?

處理嵌套對象屬性(如 ORM 模型、類實例)

class User:
    def __init__(self, name, profile):
        self.name = name
        self.profile = profile

class Profile:
    def __init__(self, level):
        self.level = level
user = User("Charlie", Profile(5))
level = glom(user, "profile.level")  # 輸出 5

3. 高級特性?

?(1) 類型處理(T 構(gòu)造器)

??在路徑中直接調(diào)用類型方法

from glom import T

data = {"value": "123"}
result = glom(data, ("value", T(int)))  # 輸出 123(字符串轉(zhuǎn)整數(shù))

(2) 迭代與映射處理?

批量處理列表或字典中的元素

data = {"numbers": [1, 2, 3]}
spec = ("numbers", [lambda x: x * 2])
result = glom(data, spec)  # 輸出 [2, 4, 6]

(3) 條件過濾?

結(jié)合 Check 或 Match 實現(xiàn)條件邏輯

from glom import Check, Match

data = {"scores": [85, 92, 78, 60]}
spec = ("scores", [Check(lambda x: x >= 90, default=None)])
result = glom(data, spec)  # 輸出 [92]

4. 對比傳統(tǒng)方法

操作??傳統(tǒng)代碼??glom 代碼?
提取嵌套字段data.get(‘a’, {}).get(‘b’, {}).get(‘c’)glom(data, ‘a.b.c’)
轉(zhuǎn)換列表元素[x[‘val’]*2 for x in data[‘items’]]glom(data, (‘items’, [‘val’], lambda x: x*2))
容錯處理多層 try-except 或 if-else 嵌套glom(data, Coalesce(‘path’, default=0))

到此這篇關(guān)于python中g(shù)lom用法的實現(xiàn)的文章就介紹到這了,更多相關(guān)python glom用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

您可能感興趣的文章:

相關(guān)文章

  • python flask搭建web應(yīng)用教程

    python flask搭建web應(yīng)用教程

    今天小編就為大家分享一篇python flask搭建web應(yīng)用教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python中join()函數(shù)多種操作代碼實例

    Python中join()函數(shù)多種操作代碼實例

    這篇文章主要介紹了Python中join()函數(shù)多種操作代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Python實現(xiàn)簡易超市管理系統(tǒng)

    Python實現(xiàn)簡易超市管理系統(tǒng)

    這篇文章主要為大家詳細介紹了python如何實現(xiàn)簡易超市管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Python基于lxml模塊解析html獲取頁面內(nèi)所有葉子節(jié)點xpath路徑功能示例

    Python基于lxml模塊解析html獲取頁面內(nèi)所有葉子節(jié)點xpath路徑功能示例

    這篇文章主要介紹了Python基于lxml模塊解析html獲取頁面內(nèi)所有葉子節(jié)點xpath路徑功能,結(jié)合實例形式較為詳細的分析了Python使用lxml模塊進行xml節(jié)點數(shù)據(jù)解析的相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2018-05-05
  • VSCode配置Anaconda Python環(huán)境的實現(xiàn)

    VSCode配置Anaconda Python環(huán)境的實現(xiàn)

    VisualStudioCode中可以使用Anaconda環(huán)境進行Python開發(fā),本文主要介紹了VSCode配置Anaconda Python環(huán)境的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • Python基礎(chǔ)教程之元組的定義與不可變特性(對比列表)

    Python基礎(chǔ)教程之元組的定義與不可變特性(對比列表)

    元組的魅力在于它的簡單性和明確性,它不追求成為全能數(shù)據(jù)結(jié)構(gòu),而是專注于做好一件事,就是提供不可變的有序集合,這篇文章主要介紹了Python基礎(chǔ)教程之元組的定義與不可變特性(對比列表)的相關(guān)資料,需要的朋友可以參考下
    2026-05-05
  • 利用Python解決Excel問題的最佳方案總結(jié)

    利用Python解決Excel問題的最佳方案總結(jié)

    python處理excel文件有很多方法,最開始接觸的是xlrd、xlsxwriter模塊,分別用于excel文件的讀、寫,后來又學(xué)習(xí)了openpyxl模塊,可以同時完成excel文件的讀、寫,下面這篇文章主要給大家介紹了關(guān)于利用Python解決Excel問題的最佳方案,需要的朋友可以參考下
    2023-04-04
  • python遠程調(diào)用rpc模塊xmlrpclib的方法

    python遠程調(diào)用rpc模塊xmlrpclib的方法

    今天小編就為大家分享一篇python遠程調(diào)用rpc模塊xmlrpclib的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python實現(xiàn)高斯投影正反算方式

    python實現(xiàn)高斯投影正反算方式

    今天小編就為大家分享一篇python實現(xiàn)高斯投影正反算方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python實現(xiàn)全角半角字符互轉(zhuǎn)的方法

    Python實現(xiàn)全角半角字符互轉(zhuǎn)的方法

    大家都知道在自然語言處理過程中,全角、半角的的不一致會導(dǎo)致信息抽取不一致,因此需要統(tǒng)一。這篇文章通過示例代碼給大家詳細的介紹了Python實現(xiàn)全角半角字符互轉(zhuǎn)的方法,有需要的朋友們可以參考借鑒,下面跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11

最新評論

合水县| 丹棱县| 肇源县| 嘉祥县| 怀宁县| 集安市| 双江| 抚宁县| 上犹县| 团风县| 长宁区| 武功县| 上饶县| 毕节市| 新巴尔虎左旗| 永德县| 鄂温| 元阳县| 浠水县| 定州市| 滕州市| 泰顺县| 唐河县| 原阳县| 潢川县| 泰州市| 米泉市| 安丘市| 迁西县| 六盘水市| 工布江达县| 南投市| 崇义县| 清水县| 肥城市| 庆城县| 通化县| 平泉县| 宜春市| 绥棱县| 肃南|