gpt4 book ai didi

python - 使用带有变量的 namedtuple._replace 作为字段名

转载 作者:太空狗 更新时间:2023-10-29 21:21:35 25 4
gpt4 key购买 nike

我可以使用变量引用 namedtuple 字段名吗?

from collections import namedtuple
import random

Prize = namedtuple("Prize", ["left", "right"])

this_prize = Prize("FirstPrize", "SecondPrize")

if random.random() > .5:
choice = "left"
else:
choice = "right"

#retrieve the value of "left" or "right" depending on the choice
print "You won", getattr(this_prize,choice)

#replace the value of "left" or "right" depending on the choice
this_prize._replace(choice = "Yay") #this doesn't work

print this_prize

最佳答案

元组是不可变的,NamedTuples 也是。它们不应该被改变!

this_prize._replace(choice = "Yay") 使用关键字参数 "choice" 调用 _replace。它不使用 choice 作为变量,而是尝试用 choice 的名称替换字段。

this_prize._replace(**{choice : "Yay"} ) 将使用任何 choice 作为字段名

_replace 返回一个新的 NamedTuple。您需要重新分配它:this_prize = this_prize._replace(**{choice : "Yay"} )

只需使用字典或编写普通类即可!

关于python - 使用带有变量的 namedtuple._replace 作为字段名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2157561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com