namedtuple 賦予預設值

2021-08-22 04:38:07 字數 1164 閱讀 3747

首先講講什麼是namedtuple。

namedtuple能夠用來建立類似於元祖的資料型別,除了能夠用索引來訪問資料,能夠迭代,更能夠方便的通過屬性名來訪問資料。

在python中,傳統的tuple類似於陣列,只能通過下標來訪問各個元素,我們還需要注釋每個下標代表什麼資料。通過使用namedtuple,每個元素有了自己的名字,類似於c語言中的struct,這樣資料的意義就可以一目了然了。

from collections import namedtuple

user = namedtuple('user', ('name', 'age', '***'))

上面的**就建立了乙個user類,並且擁有3個屬性name,age和***。預設建立user類物件的時候,所有屬性都需要賦值。

下面的寫法會丟擲異常:

# typeerror: __new__() 

# missing

3 required positional arguments: 'name', 'age', and '***'

a = user()

print(a)

正確的寫法:

a = user(name='zhe', age=21, ***='male')

print(a)

但是我們可以為每個namedtuple物件賦予預設值:

user.__new__.__defaults__ = ('zhe', 21, 'male')
這個就可以執行:

a = user()

# user(name='zhe', age=21, ***='1')

print(a)

更高階的用法,假設下面的field類,我們需求name為必填,而required和location有預設值,則可以有如下寫法:

field = namedtuple('field', [

'name', 'required', 'location'

])field.__new__.__defaults__ = (false, '')

f = field(name='zhexiao')

print(f)

Golang json化時允許賦予預設值

演示omitempty package main import encoding json fmt func main type person struct var coder person var level int 0 coder.level level coder.name mike byte...

預設值清洗

預設值是資料中最常見的乙個問題,處理預設值有很多方式,主要包括以下四個步驟進行預設值處理 確定預設值範圍 去除不需要的字段 填充預設值內容 重新獲取資料 注意 最重要的是預設值內容填充。在進行確定預設值範圍的時候,對每個欄位都計算其缺失比例,然後按照缺失比例和字段重要性分別指定不同的策略 重要性高,...

解構給預設值 解構賦值預設值誤區

問題還原 這是最近 cr 的時候在業務 中發現了乙個問題,先來看一下問題 data 為介面返回的資料 const total 0 data.result const list bizobject.list 其他邏輯,比如把 list 更新到 state 中,等等 a 介面正常的情況 data 中有 ...