亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

namedtuple的_make函數傳入dict,將key映射到字段,而不是value,為什么?

#?python3.6
from?collections?import?namedtuple
User?=?namedtuple('User',?['name',?'age',?'height'])

dict_user?=?{
????'name':?'小張',
????'height':?1.75,
????'age'?:?18,
}

user?=?User._make(dict_user)
print(user)

'''
結果為什么是把dict的key,而不是value賦值給了namedtuple的字段,結果如下:
User(name='name',?age='height',?height='age')
'''


正在回答

3 回答

因為 字典雖然是iterable,但是在迭代的時候,其返回的是key值,而非value值,所以要想使用的是dict的value值,可以像上面說的那樣,使用dict的values(),因為該方法得到的是dict的value值的可迭代對象

0 回復 有任何疑惑可以回復我~

https://img1.sycdn.imooc.com//5b4b08fa0001811a10950438.jpg

iterable,next()取值



0 回復 有任何疑惑可以回復我~

namedtuple對象的_make方法內容主要如下:

@classmethod

? ? def _make(cls, iterable, new=tuple.__new__, len=len):

????????result = new(cls, iterable)

其中第二個參數new的默認值為tuple對象的__new__方法,該方法是一個靜態方法,用于構建tuple實例且在__init__方法之前調用。

結合你所寫的代碼:user?=?User._make(dict_user)

user來自于tuple的new方法通過傳入的dict生成,猜測(做了一些小實驗)該方法對傳入的dict調用了tuple函數,因此導致dict的key部分作為參數傳了進去。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

namedtuple的_make函數傳入dict,將key映射到字段,而不是value,為什么?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號