|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
将名字映射到序列变量中去
问题描述:
不用通常通过下标或索引的方法来访问列表元组
一、namedtuple函数subscriber = namedtuple("信息", ["name", "age"]) # 创建namedtuple对象
dmq = subscriber("大马强", 18)
print(dmq)
print(dmq.name, dmq.age)
test = namedtuple("蔬菜", ["name", "shares", "price"])
recodes = (["萝卜", 5, 12.2], ["青菜", 1, 1.2], [
"辣椒", 2, 2.2], ["芹菜", 3, 11.2], ["南瓜", 10, 0.2])
def compute_cost(recodes, test):
total = 0.0
for i in recodes:
t = test(*i)
total += t.shares * t.price # 利用映射的名字来操作
return f"蔬菜一共{total}元"
print(compute_cost(recodes, test))
信息(name='大马强', age=18)
大马强 18
蔬菜一共102.2元
namedtuple 可以视作字典的代替,但是比字典空间小,效率高,但namedtuple对象不能像字典一样直接修改数据
_replace 可以修改属性,但是返回的是一个新对象
二、_replace方法# 创建一个可选择缺失字段德命名元组
test = namedtuple("蔬菜", ["name", "price", "addr", "time"])
o_data = test("", 0, None, None) # 创建一个原型
def replace(parm):
return o_data._replace(**parm) # ?**
a = {"name": "白菜", "price": 18, "addr": "海南"}
new = replace(a)
print(new)
蔬菜(name='白菜', price=18, addr='海南', time=None)
|
|