Python的Namedtuple索引实例
问题描述:
所以这是我对我的实验室编码项目代码,我目前的工作:Python的Namedtuple索引实例
from collections import namedtuple
Restaurant = namedtuple('Restaurant', 'name cuisine phone dish price')
# Restaurant attributes: name, kind of food served, phone number, best dish, price of that dish
RC = [Restaurant("Thai Dishes", "Thai", "334-4433", "Mee Krob", 12.50),
Restaurant("Nobu", "Japanese", "335-4433", "Natto Temaki", 5.50),
Restaurant("Nonna", "Italian", "355-4433", "Stracotto", 25.50),
Restaurant("Jitlada", "Thai", "324-4433", "Paht Woon Sen", 15.50),
Restaurant("Nola", "New Orleans", "336-4433", "Jambalaya", 5.50),
Restaurant("Noma", "Modern Danish", "337-4433", "Birch Sap", 35.50),
Restaurant("Addis Ababa", "Ethiopian", "337-4453", "Yesiga Tibs", 10.50)]
我想问你作为一个初学者是:什么方法(S)我应该使用允许我的程序索引列表的特定部分?
例如,我怎么去索引所有的大名单中餐馆的名单?这份名单包括刚刚从列表中餐馆不是所有的其他信息,如电话号码,等...
我都用了分片方式和列表功能在试图弄清楚这一点,我自己并没有证明工作。 > :(
答
我不知道,当你说指数如果你只想值或性能,但对于基本检索你可能只是做这样的事情
[r.name for r in RC]
这将使你所有的名字餐厅你在RC
你可以更大胆,
RC = [...]
def getValues(name):
return [getattr(r, name) for r in RC]
然后,你可以这样做,
getValues('name')
如果你需要缓存你可以考虑使用memoize的
答
不能完全肯定你的意思是“指数”,但这可能会做你想要什么:
from collections import namedtuple
Restaurant = namedtuple('Restaurant', 'name cuisine phone dish price')
# Restaurant attributes: name, kind of food served, phone number, best dish, price of that dish
RC = [Restaurant("Thai Dishes", "Thai", "334-4433", "Mee Krob", 12.50),
Restaurant("Nobu", "Japanese", "335-4433", "Natto Temaki", 5.50),
Restaurant("Nonna", "Italian", "355-4433", "Stracotto", 25.50),
Restaurant("Jitlada", "Thai", "324-4433", "Paht Woon Sen", 15.50),
Restaurant("Nola", "New Orleans", "336-4433", "Jambalaya", 5.50),
Restaurant("Noma", "Modern Danish", "337-4433", "Birch Sap", 35.50),
Restaurant("Addis Ababa", "Ethiopian", "337-4453", "Yesiga Tibs", 10.50)]
def retrieve(records, column):
""" return list of values for column from a list of namedtuples """
if records and column not in records[0]._fields:
raise ValueError('invalid column name:' + repr(column))
return [getattr(rec, column) for rec in records]
print retrieve(RC, 'name')
输出:
['Thai Dishes', 'Nobu', 'Nonna', 'Jitlada', 'Nola', 'Noma', 'Addis Ababa']
我想我不知道你在这种情况下指数是什么意思? – Colleen
这是特定的疑问,实验室提出,如果这有助于: –
假设你的意思是'通过“所有餐馆” name','RC [0] .name'将是第一项。 – Moshe