日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

python glom模塊的使用簡介

瀏覽:25日期: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 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲欧美日韩国产| 日本亚洲不卡| 久久久久久美女精品| 欧美日韩国产传媒| 日韩一区二区三区在线看| 国产欧美三级| 亚洲一级少妇| 视频一区二区中文字幕| 国产精品久久久亚洲一区| 国产网站在线| 先锋亚洲精品| 亚洲资源在线| 麻豆精品视频在线观看免费| 日韩国产综合| 久久一区国产| 国产精品久久久亚洲一区| 久久不卡国产精品一区二区| 成人一二三区| 视频一区日韩| 久久蜜桃精品| 久久免费高清| 午夜宅男久久久| 亚洲男女自偷自拍| 亚洲第一精品影视| 久久不卡日韩美女| 都市激情国产精品| 日韩国产欧美| 国产一区久久| 一区二区精彩视频| 国产欧美一区二区三区米奇| 精品久久97| 亚洲一本视频| 日韩一区二区三免费高清在线观看| 日本亚洲三级在线| 国产精品久久久久久模特| 国产精品久久久久蜜臀| 国产在线日韩| 91精品美女| 激情亚洲影院在线观看| 鲁大师成人一区二区三区| 国产精品一级| 日韩欧美另类一区二区| 视频一区二区中文字幕| 国产精品丝袜在线播放| 久久久夜精品| 日本视频在线一区| 视频二区不卡| 婷婷精品久久久久久久久久不卡| 精品久久在线| 视频一区二区中文字幕| 麻豆国产精品一区二区三区| 亚洲第一精品影视| 91麻豆精品| 亚洲成人二区| 久久国产精品免费精品3p| 午夜精品久久久久久久久久蜜桃| 一本一本久久| 国产一区日韩| 久久国产人妖系列| 美女久久网站| 激情欧美丁香| 国产粉嫩在线观看| 久久精品99国产精品日本| 日本美女一区| 91精品国产自产精品男人的天堂 | 国产精品草草| 国产精品白丝av嫩草影院| 蜜臀精品久久久久久蜜臀| 亚洲二区精品| 日韩在线高清| 亚洲午夜久久久久久尤物| 一区久久精品| 成人在线超碰| 日韩区欧美区| 亚洲一本视频| 国产精品xx| 青草久久视频| 日韩午夜在线| 精精国产xxxx视频在线野外| 国产欧美另类| 蜜桃av一区二区在线观看| 国产videos久久| 91精品国产自产精品男人的天堂| 亚洲激精日韩激精欧美精品| 国产一区二区三区亚洲| 欧美日韩18| 在线精品亚洲| 99成人在线| 99精品一区| 老司机免费视频一区二区| 日韩欧美美女在线观看| 中文亚洲免费| 影视先锋久久| 理论片午夜视频在线观看| 国产精品欧美一区二区三区不卡| 蜜桃久久av| 美女亚洲一区| www.com.cn成人| 你懂的亚洲视频| 青草av.久久免费一区| 免费在线观看精品| 影音先锋久久| 国产专区一区| 国产精品原创| 精品视频一区二区三区在线观看 | 欧美一区精品| 亚洲欧美在线专区| 亚洲综合日韩| 五月天激情综合网| 日韩在线综合| 成人片免费看| 中文一区一区三区高中清不卡免费| 免费在线观看一区| 欧美一级二级视频| 日本不卡在线视频| 亚洲精品一级| 爽好久久久欧美精品| 日韩视频久久| 一级欧洲+日本+国产| 亚洲精品88| 亚洲三级欧美| 亚洲www免费| 99久久夜色精品国产亚洲狼| 99精品电影| 亚洲国产日韩欧美在线| 在线亚洲自拍| 久久国产88| 亚洲精品在线二区| 日韩欧美在线精品| 国产女人18毛片水真多18精品| 日本成人一区二区| 国产毛片精品久久| 久久wwww| 麻豆理论在线观看| 亚洲人成在线网站| 蜜桃tv一区二区三区| 婷婷综合社区| 日韩制服丝袜先锋影音| 日韩精品一级二级| 日韩一区精品| 国产乱码精品一区二区三区亚洲人| 国产精品中文字幕制服诱惑| 国产精品久久乐| 在线天堂资源www在线污| 久久久久国产精品一区二区| 欧美日韩免费观看一区=区三区| 蜜桃视频一区二区三区 | 国产一卡不卡| 精品视频一区二区三区四区五区 | 一区二区精彩视频| 奇米色欧美一区二区三区| 欧美国产免费| 久久婷婷激情| 人人爽香蕉精品| 91精品福利观看| 久久一区二区三区喷水| 视频一区二区国产| 91亚洲精品视频在线观看| 欧美经典一区| 久久精品国内一区二区三区水蜜桃| 欧美特黄a级高清免费大片a级| 亚洲影院天堂中文av色| 国产精品一区高清| 日韩欧美不卡| 视频一区免费在线观看| 国产精品亚洲欧美一级在线| 久久电影tv| 蜜臀久久99精品久久久久宅男| 日韩av不卡在线观看| 9999国产精品| 亚洲一区有码| 激情综合五月| 免费在线观看一区二区三区| 欧美日韩xxxx| 九九精品调教| 亚洲综合色婷婷在线观看| 久久精品国产久精国产爱| 国产高清一区| 国产精品亚洲片在线播放| 久久三级视频| 91亚洲无吗| 久久久久午夜电影| 91精品福利观看| 久久国产亚洲精品| 日本久久二区| 久久伦理在线| 国产精品亚洲成在人线| 亚洲欧美日韩高清在线| 日韩二区三区在线观看| 日韩av首页| 欧美日韩精品一区二区三区视频 | 噜噜噜躁狠狠躁狠狠精品视频 | 国产精品99一区二区| 国产欧美亚洲一区| 亚洲欧美综合| 精品美女在线视频| 中文字幕日韩欧美精品高清在线| 精品免费视频| 日韩精品视频网| 欧美在线资源|