2016-05-20 14 views
0

に新しい項目を追加するたびにする方法:新しいオブジェクトに私はだから私はこのような問題が持っているリストのpython

if array_of_things[1][1] == True: #If the second item in list is bumpy 
    print("The second item is bumpy") 
:アイテムにアクセスするには

array_of_things = [[is_shiny=False, is_bumpy=True] 
        [is_shiny=False, is_bumpy=False] 
        [is_shiny=True, is_bumpy=True]] 

を、私はこれを行うだろう

はしかし、私のコードをより明確にするために、私は、配列内の各アイテムは次のようにアクセスできるようにしたい:

if array_of_things[1].is_bumpy == True: #If the second item in the list is bumpy 
    print("The second item is bumpy") 

私はそれをどのように行うことができますか?どんな助けもありがとう。

+1

外部リストのリストの代わりに辞書オブジェクトを使用すると考えましたか? – dunkmann00

+1

注文する場合は、OrderedDictを使用することができます。 namedtupleも見てください。 –

答えて

5

一つの選択肢はdictを使用していますが、正確にしたい場合はさあなたの質問namedtupleに与えられた構文を使用することができます。

from collections import namedtuple 

Thing = namedtuple('Thing', ['is_shiny', 'is_bumpy']) 
array_of_things = [Thing(False, True), Thing(False, False), Thing(True, True)] 

if array_of_things[1].is_bumpy == True: 
    print("The second item is bumpy") 

namedtupleは、最初のパラメータの型名を持つtupleの新しいサブクラスを作成します。フィールドは、通常のtupleのようにインデックスを使用するか、2番目のパラメータで渡されたフィールド名を使用してアクセスできます。

+0

ありがとう! = Dは役に立ちました。 – Demandooda

2

それらの「物事は」あなたのプログラムのために重要な意味を持っている場合は、私はクラスを定義することをお勧めしたいが、それ以外は、dictsを使用します。

array_of_things = [{'is_shiny': False, 'is_bumpy': True}, 
        {'is_shiny': False, 'is_bumpy': False}, 
        {'is_shiny': True, 'is_bumpy': True}] 

if array_of_things[1]['is_bumpy']: # since it's a boolean, no need for `==` 
    print("The second item is bumpy") 
関連する問題