|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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)
|
|