您好,登錄后才能下訂單哦!
今天小編給大家分享一下Python命名元組怎么使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
Python集合中的命名元組類namedTuples為元組中的每個位置賦予意義,并增強代碼的可讀性和描述性。它們可以在任何使用常規元組的地方使用,且增加了通過名稱而不是位置索引方式訪問字段的能力。其來自Python內置模塊collections。其使用的常規語法方式為:
import collections XxNamedTuple = collections.namedtuple(typename, field_names):
如果導入的方式不同,比如:import collections as cAlias、from collections import namedtuple、from collections import namedtuple as NamedTuple等,這樣我們創建的命名元祖子類的形式可以對應為:
XxNamedTuple = cAlias.namedtuple(……) XxNamedTuple = namedtuple(……) XxNamedTuple = NamedTuple(……)
其中:
參數typename:為返回的新元組子類XxNamedTuple指定一個字符串型類名稱。新的子類用于創建類似元組的對象,所創建的對象具有可通過屬性查找、位置索引以及迭代的方式來訪問的相關字段。子類的實例還有一個有用的文檔字符串(相當于幫助文檔,帶有typename和field_names)和一個有用的__repr__()方法,該方法以名稱=值的格式列出元組內容。
參數field_names:是通常是一個字符串序列,如[' x ', ' y ']。作為可選方式,field_names也可以是一個字符串,但包含的相應字段名是用空格和/或逗號分隔,例如' x y '或' x, y '。
任何有效的Python標識符都可以用作命名字段名稱,但不能以下劃線(_)開始。有效的標識符包括字母、數字和下劃線,但不要以數字或下劃線開始,不能使用關鍵字,如class、return、global、pass或raise等。
為了理解NamedTuple是如何工作的,我們假設有一個Employee對象,其擁有id、name和age屬性。請看代碼示例清單:
運行程序輸出結果類似如下:
Employee(, name='Solo Cui ', age='18') 按索引方式訪問Employee的名子為 : Solo Cui Employee(, name='Annie Kent', age='26') 按鍵(字段名)訪問Employee的名子為 : Annie Kent
另外,創建命名元組的函數中其它幾個參數用的少,這里僅作簡單介紹:
參數rename:如果rename為true,無效的字段名將自動替換為位置名。例如,['abc', 'def', 'ghi', 'abc']被轉換為['abc', '_1', 'ghi', '_3'],消除了關鍵字def和重復的字段名abc。
參數defaults:可以是None或默認值的可迭代對象。由于帶有默認值的字段必須出現在任何沒有默認值的字段之后,因此默認值應用于最右邊的參數,依次向左。例如,如果字段名是['x', 'y', 'z'],默認值是(1,2),那么x將是一個必需的參數,y將默認值為1,z將默認值為2。
參數module:如果定義了module,則命名元組的__module__屬性設置為該值。
命名元組實例沒有為每個實例單獨使用字典,所以它們是輕量級的,不需要比常規元組更多的內存。
除了從元組繼承的方法之外,命名元組還支持另外三個方法和兩個屬性。為了防止與字段名發生沖突,方法和屬性名以下劃線開頭。分別介紹如下:
1)_make(iterable):
類方法,從現有序列或可迭代對象生成新實例。代碼示例如下:
輸出結果類似如下:
Employee(, name='Batman', age='28')
2)_asdict ():
返回一個新的字典,它將字段名映射到對應的值。示例代碼如下:
輸出結果類似如下:
{'id': '333', 'name': 'Batman', 'age': '28'}
3)_replace (**kwargs):
返回一個命名元組的新實例,用新值替換指定字段。代碼示例如下:
輸出結果如下:
Employee(, name='Batman', age='34')
4)_fields:
以字符串元組方式列出字段名的。用于自省和從現有的命名元組創建新的命名元組類型。示例代碼如下:
輸出結果為:
('id', 'name', 'age')
我們可以使用_fields屬性從現有的命名元組中創建新的命名元組。示例如下:
輸出結果類似如下:
Pixel(x=5, y=8, red=128, green=255, blue=0)
這里所說的實體,類似Java中的數據實體對象——只有簡單的屬性字段。而命名元組在為csv或sqlite3模塊操作而返回的元組結果分配給對應字段名而裝配成簡單實體時特別有用,自動進行字段的對應賦值。比如在當前Python程序位置有個employees.csv,其包含內容如下:
張三,26,工程師,開發部,中級 李四,32,項目經理,項目部,高級
通過示例,我們來完成Employee實體的命名元組的自動裝配,代碼示例如下:
輸出結果類似如下:
張三 工程師 26 開發部 中級 李四 項目經理 32 項目部 高級
再簡單地來個數據庫操作和裝配實體的示例,代碼清單如下:
我這里只是簡單的創建了數據庫并創建表,然后插入一條數據,再查詢并完成命名元組的實體化裝配和結果輸出。
運行輸出結果如下:
王武 經理
以上就是“Python命名元組怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。