這篇文章主要介紹“python具名元組怎么使用”,在日常操作中,相信很多人在python具名元組怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python具名元組怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
專注于為中小企業(yè)提供成都網(wǎng)站制作、做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)大城免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
collections.namedtuple用于構(gòu)造帶字段名的元組。對應(yīng)類型為typing.NamedTuple(可用作超類)。
namedtuple對象的定義:
collections.namedtuple(typename, field_names, verbose=False, rename=False, defaults=None, module=None):
typename:元組名稱
field_names:是字段序列(如,[‘x’, ‘y’]);
rename:為true時,字段名無效時(如,重名或使用關(guān)鍵字)會被自動替換為位置名(如,_1);
defaults:字段的默認值,若為iterable對象,則依次對應(yīng)field_names中字段的缺省值;
from collections import namedtuple Color = namedtuple("Color", "r g b alpha") def convert_to_color(desc: str, alpha: float = 0.0): if desc == "green": return Color(r=50, g=205, b=50, alpha=alpha) elif desc == "blue": return Color(r=50, g=0, b=255, alpha=alpha) else: return Color(r=50, g=0, b=0, alpha=alpha)
從可迭代對象(Iterable)構(gòu)造具名元組:
c = Color._make([10, 20, 30, 0.1]) nc = Color._make((10, 20, 30, 0.1)) print("r:", c.r)
具名元組修改:不能直接修改里面的值,可通過_replace構(gòu)造一個新的:
c = {"r": 50, "g": 205, "b": 50, "alpha": 0.5} nc = c._replace(r=100)
把字典轉(zhuǎn)換為具名元組:
c = {"r": 50, "g": 205, "b": 50, "alpha": 0.5} nc = Color(**c)
具名元組轉(zhuǎn)換為字典(通過_asdict方法):
c = Color(r=50, g=0, b=0, alpha=0.5) d = c._asdict()
具名元組轉(zhuǎn)換為元組:
c = Color(r=50, g=0, b=0, alpha=0.5) t = tuple(c)
屬性_fields包含所有字段的元組:如('r', 'g', 'b', 'alpha');
屬性__annotations__包含字段與對應(yīng)類型的字典:如{'r': <class 'float'>, 'g': <class 'float'>, 'b': <class 'float'>, 'alpha': <class 'float'>};
屬性_field_defaults保證有初始值的字段與初始值的字典:如{'alpha': 0.0};
具名元組排序:通過operator庫中的attrgetter可指定排序字段:
from operator import attrgetter colors = [ Color(r=50, g=205, b=50, alpha=0.1), Color(r=50, g=205, b=50, alpha=0.5), Color(r=50, g=0, b=0, alpha=0.3) ] out = sorted(colors, key=attrgetter("alpha")) print(out)
字典dict是一種非常通用的數(shù)據(jù)結(jié)構(gòu),很容易被濫用,同時相對namedtuple,有以下問題:
字典是不可散列,因此無法將其存儲在set或其他字典中;
字典是可變的,可以根據(jù)需要添加任意數(shù)量的新鍵;
與dict類似,在namedtuple中可以將值分配給單個變量并根據(jù)需要使用。但:
namedtuple是不可變的,不會意外添加新的值(鍵);
python3.7中引入了數(shù)據(jù)類(Data Class),可看做是“具有默認值的可變namedtuple”:
可方便地添加doc;
可定義可選字段;
from dataclasses import dataclass # frozen設(shè)為true后,字段內(nèi)容將不允許修改(與namedtuple完全類似) # 否則可修改字段;并可任意添加字段(如,c.n=1); @dataclass(frozen=True) class DColor: """A regular class that represents a color.""" r: float g: float b: float alpha: float = 0.0 # c = DColor(r=10, g=20, b=30) c = DColor(10, 20, 30)
通過繼承NamedTuple也可方便定義(同時可定義字段的初始值,有初始值的字段必須在無初始字段后面):
from typing import NamedTuple class NColor(NamedTuple): """A namedtuple that represents a color.""" r: float g: float b: float alpha: float = 0.0 nc = NColor(100, 110, 120)
到此,關(guān)于“python具名元組怎么使用”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
本文名稱:python具名元組怎么使用
分享路徑:http://sd-ha.com/article36/iedppg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站改版、企業(yè)網(wǎng)站制作、移動網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、標簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)