成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

python glom模塊的使用簡介

瀏覽:2日期:2022-06-22 16:12:48

工欲善其事,必先利其器!我們想要更輕松更有效率地開發,必須學會一些“高級”技能。前不久看到一位 Python 高僧的代碼,其中使用了一個短小精悍的模塊,我認為還蠻有用的,今天分享給大家。

這個模塊就叫 glom ,是 Python 處理數據的一個小模塊,它具有如下特點:

嵌套結構并基于路徑訪問 使用輕量級的Pythonic規范進行聲明性數據轉換 可讀、有意義的錯誤信息 內置數據探測和調試功能

看起來比較抽象,對不對?下面我們用實例來給大家演示一下。

安裝

作為 Python 內置模塊,相信你一定知道怎么安裝:

pip3 install glom

幾秒鐘就搞定!

簡單使用

我們來看看最簡單的用法:

d = {'a': {'b': {'c': 1}}}print(glom(d, 'a.b.c')) # 1

在這里,我們有一個嵌套三層的 json 結構,我們想獲取最里層的 c 對應的值,正常的寫法應該是:

print(d['a']['b']['c'])

如果到這里,我說 glom 比傳統方式好一些,因為你不用一層層地寫中括號和引號,你會不會嗤之以鼻?

好,我們再來看看下面的情況:

d = {'a': {'b': None}}print(d['a']['b']['c'])

遍歷到一個 None 對象,你會收到下面的錯誤:

Traceback (most recent call last): File '/Users/cxhuan/Documents/python_workspace/mypy/pmodules/pglom/glomstudy.py', line 10, in <module> print(d['a']['b']['c'])TypeError: ’NoneType’ object is not subscriptable

我們來看看 glom 的處理方式:

from glom import glomd = {'a': {'b': None}}print(glom(d, 'a.b.c'))

同樣地,glom 不能把錯誤的輸出成對的,你會得到以下錯誤:

Traceback (most recent call last): File '/Users/cxhuan/Documents/python_workspace/mypy/pmodules/pglom/glomstudy.py', line 11, in <module> print(glom(d, 'a.b.c')) File '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/glom/core.py', line 2181, in glom raise errglom.core.PathAccessError: error raised while processing, details below. Target-spec trace (most recent last): - Target: {’a’: {’b’: None}} - Spec: ’a.b.c’glom.core.PathAccessError: could not access ’c’, part 2 of Path(’a’, ’b’, ’c’), got error: AttributeError('’NoneType’ object has no attribute ’c’')

如果你仔細看報錯內容,你就會發現這報錯內容極其詳細,一目了然,這對于找程序 bug 簡直是神器!

復雜用法

剛才簡單的例子,讓大家對 glom 有了直觀的認識,接下來我們看看 glom 的 glom 方法的定義:

glom(target, spec, **kwargs)

我們看看參數的含義:

target:目標數據,可以是dict、list或者其他任何對象 spec:是我們希望輸出的內容

下面我們來使用這個方法。

先看一個例子。我們有一個 dict ,想要獲取出 所有 name 的值,我們可以通過 glom 來實現:

data = {'student': {'info': [{'name': '張三'}, {'name': '李四'}]}}info = glom(data, ('student.info', ['name']))print(info) # [’張三’, ’李四’]

如果用傳統方式的話,我們可能會需要遍歷才能獲取到,但是使用 glom ,我們只需要一行代碼就可以了,輸出是一個數組。

如果你不想輸出數組,而是想要一個 dict 的話,那也是很簡單的:

info = glom(data, {'info': ('student.info', ['name'])})print(info) # {’info’: [’張三’, ’李四’]

我們只需要將原來的數組賦值給一個字典來接收就好了。

搞定麻煩需求

假如我現在有兩組數據,我要取出 name 的值:

data_1 = {'school': {'student': [{'name': '張三'}, {'name': '李四'}]}}data_2 = {'school': {'teacher': [{'name': '王老師'}, {'name': '趙老師'}]}}spec_1 = {'name': ('school.student', ['name'])}spec_2 = {'name': ('school.teacher', ['name'])}print(glom(data_1, spec_1)) # {’name’: [’張三’, ’李四’]}print(glom(data_2, spec_2)) # {’name’: [’王老師’, ’趙老師’]}

我們通常是這么寫,對嗎?假如我們有好多組數據,每組都是類似的取法呢?這時候我們就會想辦法避免一個個重復寫 N 行參數了,我們可以使用 Coalesce 方法:

data_1 = {'school': {'student': [{'name': '張三'}, {'name': '李四'}]}}data_2 = {'school': {'teacher': [{'name': '王老師'}, {'name': '趙老師'}]}}spec = {'name': (Coalesce('school.student', 'school.teacher'), ['name'])} print(glom(data_1, spec)) # {’name’: [’張三’, ’李四’]}print(glom(data_2, spec)) # {’name’: [’王老師’, ’趙老師’]}

我們可以用 Coalesce 把多個需求聚合起來,然后針對同一個 spec 來取值就行了。

下面再來一個大殺器——取值計算。glom 還可以對取值進行簡單計算,我們來看例子:

data = {'school': {'student': [{'name': '張三', 'age': 8}, {'name': '李四', 'age': 10}]}}spec = {'sum_age': ('school.student', ['age'], sum)}print(glom(data, spec)) # {’sum_age’: 18}總結

介紹了這么多,大家應該知道 glom 的厲害之處了吧,據說很多大佬都喜歡使用呢。其實它還有很多其他的實用功能有待大家去發掘,這里就不一一介紹了。

以上就是python glom模塊的使用簡介的詳細內容,更多關于python glom模塊的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美不卡在线视频| 国产成人免费视频一区| 99久久免费精品| 国产偷久久久精品专区| 亚洲男人天堂一区| 欧美三区在线观看| 欧美精品一区二区三区在线看午夜| 久久精品一区二区三区四区| 久久xxxx| 风间由美性色一区二区三区| 国产精品理论在线观看| 欧美伦理视频网站| 国产精品久久777777毛茸茸| 成人av资源下载| 亚洲一卡二卡三卡四卡无卡久久| 欧美日韩一级黄| 99久久精品费精品国产一区二区 | 91豆麻精品91久久久久久| 国产一区二区三区在线观看免费 | 欧美视频在线观看一区二区| 欧美在线高清| 狠狠久久亚洲欧美| 亚洲裸体xxx| 国产日产精品1区| 久久综合九色综合网站| 欧美性久久久| 亚洲精品五月天| 欧美一区二区在线免费观看| 亚洲国产精品av| 日韩和欧美一区二区| 久久亚洲国产精品一区二区 | av欧美精品.com| 欧美卡1卡2卡| 久草中文综合在线| 欧美日本在线播放| 日韩电影网1区2区| 久久久久久黄| 奇米影视一区二区三区小说| 久久午夜影视| 国产精品国产三级国产专播品爱网 | 国产一区二区女| 日韩视频在线永久播放| 91蜜桃免费观看视频| 一色桃子久久精品亚洲| 亚洲人体偷拍| 亚洲国产精品一区二区尤物区| 免费在线亚洲欧美| 偷窥少妇高潮呻吟av久久免费| 一本到不卡免费一区二区| 日本欧美一区二区在线观看| 欧美性猛交xxxx黑人交| 丁香啪啪综合成人亚洲小说| 精品国精品国产| 国产精品观看| 亚洲一区二区美女| 老司机亚洲精品| 国产剧情一区二区三区| 精品国产免费人成电影在线观看四季 | 亚洲人成影院在线观看| 国产精品久久久一区二区三区| 亚洲二区在线观看| 欧美体内she精高潮| 成人免费va视频| 日本一区二区三区免费乱视频| 伊人久久成人| 天天综合网天天综合色| 91精品国产综合久久久久久久久久| 不卡的看片网站| 亚洲乱码国产乱码精品精可以看| 欧美性色黄大片| 成人福利在线看| 国产精品久久久久aaaa樱花| 国产婷婷精品| 国产麻豆一精品一av一免费| 日本一区二区三区免费乱视频| 在线综合亚洲| 精品一区二区三区日韩| 久久网站最新地址| 亚洲一区二区三区免费观看| 国产一区二区不卡老阿姨| 亚洲国产精品成人综合色在线婷婷| 国产精品有限公司| 国产福利精品导航| 亚洲同性gay激情无套| 欧美色窝79yyyycom| 成人动漫av在线| 亚洲激情综合网| 欧美理论电影在线| 欧美日韩国产精品一区二区亚洲 | 亚洲国产视频网站| 这里只有精品视频在线观看| 好看的av在线不卡观看| 免费高清成人在线| 久久综合丝袜日本网| 国产精品人人爽人人做我的可爱| 国产伦精品一区二区三区免费迷| 亚洲欧洲日韩在线| 欧美日韩国产大片| 欧美一区二区三区在线播放| 亚洲国产毛片aaaaa无费看| 欧美大片在线观看一区二区| 99国产精品视频免费观看一公开| 精品影视av免费| 亚洲人成小说网站色在线| 欧美乱妇23p| 亚洲精品乱码| 韩日av一区二区| 国产精品无遮挡| 色视频成人在线观看免| 欧美 日韩 国产 一区| 亚洲福利视频三区| 欧美www视频| 欧美专区在线| 成人午夜视频免费看| 亚洲高清在线视频| 久久影院午夜论| 在线亚洲一区二区| 国产主播一区二区三区四区| 国产精品一区三区| 中文字幕亚洲一区二区av在线| 奶水喷射视频一区| 欧美一区成人| 国内不卡的二区三区中文字幕 | 亚洲国产精选| 不卡电影一区二区三区| 青娱乐精品视频在线| 亚洲视频一二区| 久久久久国产免费免费| 欧美色图片你懂的| 亚洲欧美99| 亚洲二区三区四区| eeuss鲁片一区二区三区在线观看| 日本欧美肥老太交大片| 中文字幕一区二区三区不卡| 欧美不卡在线视频| 欧美日韩一区二区在线观看 | 日韩欧美一级精品久久| 色吧成人激情小说| 一本色道久久综合一区| 欧美激情日韩| 成人黄色软件下载| 久久www免费人成看片高清| 亚洲一二三级电影| 18成人在线观看| 国产人久久人人人人爽| 精品国产凹凸成av人网站| 欧美色成人综合| 久久久久久久久久码影片| 精品动漫3d一区二区三区免费| 成a人片国产精品| 国产一区二区剧情av在线| 视频一区二区欧美| 亚洲一二三区在线观看| 亚洲三级在线免费观看| 日本一区二区三区国色天香 | 亚洲最大色网站| 欧美精品国产| jlzzjlzz国产精品久久| 国产99久久久国产精品免费看| 免费观看一级欧美片| 午夜国产不卡在线观看视频| 欧美日本一区二区三区四区| 欧美性色黄大片手机版| 欧美在线视频日韩| 国产精品一区二区三区免费观看| 一区二区三区精品视频在线观看 | 久久99这里只有精品| 日韩av高清在线观看| 午夜精品一区在线观看| 亚洲影院在线观看| 一区二区三区高清| 亚洲女同一区二区| 日韩毛片在线免费观看| 国产精品国产馆在线真实露脸| 亚洲国产精品激情在线观看| 国产亲近乱来精品视频| 久久久亚洲午夜电影| 精品国产99国产精品| 欧美tickle裸体挠脚心vk| 日韩亚洲欧美中文三级| 欧美一区二区三区在线| 欧美一级高清片在线观看| 欧美片在线播放| 7777精品久久久大香线蕉| 宅男噜噜噜66一区二区66| 欧美肥妇bbw| 91精品麻豆日日躁夜夜躁| 欧美老肥妇做.爰bbww| 91精品国产91久久综合桃花| 亚洲欧美日韩国产成人精品影院 | 久久久综合网| 色一情一伦一子一伦一区| 久久一区精品| 久久婷婷丁香| 在线免费观看不卡av| 日韩欧美一卡二卡| 久久女同精品一区二区| 久久久久97国产精华液好用吗 | 精品中文字幕一区二区小辣椒| 紧缚奴在线一区二区三区|