分析する列のリストがあります。data [1] [2]などの特定のインデックスを参照する代わりに、列に名前を割り当ててから、さまざまなタスクの列の行をループしたいと思います。列に名前を割り当てるにはどうすればよいですか?これは、列を参照するための正しい形式ですか?
for x in range (len(data)):
if [column_name][x] ....
これを行うには、さまざまな方法があります。コードを記述する時点で名前と列の関連付けがわかっている場合、最も簡単な方法は次のとおりです。
for row in data:
(foo, bar, baz, bat) = row
...更新する必要がないと仮定しますrow
(およびdata
)。
行を更新する必要がある場合、値を変数にコピーしても機能しません。インデックスを介してアイテムを操作する必要があります。その場合、aviraldg のアプローチは最も単純です。
(foo, bar, baz, bat) = range(4)
for row in data:
row[foo] = row[bar]
名前を含む文字列で列を参照する場合は、列名をキーとするディクショナリに行をコピーする必要があります。次に、辞書の操作が完了したら、元のリストを更新するか、新しいリストに置き換える必要があります (これがこのコードの動作です)。
columns = ("foo", "bar", "baz", "bat")
for i in range(len(data)):
d = dict(zip(columns, data[i]))
d["foo"] = d["bar"]
data[i] = [d[col] for col in columns]
整数の代わりに名前を使用してデータにアクセスする最も簡単な方法は、辞書を使用することです
data = {'pig':[1, 2], 'cow':[3, 4], 'dog':[5,6]}
if data in range(2):
if data['dog'][1]==4:...
他の方法もあります。たとえば、クラスを作成してオーバーライドできます__getitem__
。または、変数名を のように 2 次元配列の列番号に割り当てることもできますdog=2
。それはすべて、あなたが何をしたいかによって異なります。
あなたがしたいことは、常に添え字を使用するのではなく、変数に列を格納してから参照することだと思います。簡単です:
varName=data[columnName]
その列への結果的なアクセスについてvarName[rowName]
は、トリックを行う必要があります