【发布时间】:2015-10-07 18:28:38
【问题描述】:
我有一个如下定义的 Restaurant 和 Dish 类型 namedtuple:
Restaurant = namedtuple('Restaurant', 'name cuisine phone menu')
Dish = namedtuple('Dish', 'name price calories')
r1 = Restaurant('Thai Dishes', 'Thai', '334-4433', [Dish('Mee Krob', 12.50, 500),
Dish('Larb Gai', 11.00, 450)])
我需要将菜品的价格更改 2.50。我有以下代码:
def Restaurant_raise_prices(rest):
result = []
for item in rest:
for dish in item.menu:
dish = dish._replace(price = dish.price + 2.50)
result.append(item)
return result
它替换价格字段并返回 Dish namedtuple:
[Dish(name='Mee Krob', price=15.0, calories=500), Dish(name='Larb Gai', price=13.5, calories=450)]
如何更改我的代码以添加餐厅?
但它只返回 Dish。如果我也想要整个餐厅怎么办?如何进行更改以使输出为:
Restaurant('Thai Dishes', 'Thai', '334-4433', [Dish(name='Mee Krob', price=15.0, calories=500), Dish(name='Larb Gai', price=13.5, calories=450)])
【问题讨论】:
-
不要为此使用命名元组。此外,您的代码不会产生该输出……替换
dish将不会更新餐厅内的(不可变)元组。
标签: list python-3.x iteration tuples