-1

したがって、現在取り組んでいるラボコーディングプロジェクトのコードは次のとおりです。

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)]

初心者としての私の質問は、私のプログラムがリストの特定の部分にインデックスを付けられるようにするには、どの方法を使用すればよいですか?

たとえば、より大きなリストからすべてのレストランのリストをインデックス化するにはどうすればよいでしょうか? このリストには、電話番号などの他のすべての情報ではなく、リストのレストランのみが含まれています...

これを自分で理解しようとして、スライスメソッドとリスト関数の両方を使用しましたが、うまくいきませんでした。>:(

4

2 に答える 2

1

値だけが必要なのか、パフォーマンスのためにインデックスが必要なのか、いつインデックスと言うのかわかりません。しかし、基本的な検索では、次のようなことができます

[r.name for r in RC]

これにより、RC にあるすべてのレストランの名前が得られます。

あなたはもっと派手になることができます、

RC = [...]
def getValues(name):
   return [getattr(r, name) for r in RC]

その後、あなたはただ行うことができます、

getValues('name')

キャッシュする必要がある場合は、 memoize を使用して調べることができます

于 2013-03-28T22:13:21.673 に答える
0

「インデックス」の意味が完全にはわかりませんが、これはあなたが望むことをするかもしれません:

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']
于 2013-03-28T22:46:22.040 に答える