0

分析する列のリストがあります。data [1] [2]などの特定のインデックスを参照する代わりに、列に名前を割り当ててから、さまざまなタスクの列の行をループしたいと思います。列に名前を割り当てるにはどうすればよいですか?これは、列を参照するための正しい形式ですか?

for x in range (len(data)):  
    if [column_name][x] .... 
4

3 に答える 3

3

これを行うには、さまざまな方法があります。コードを記述する時点で名前と列の関連付けがわかっている場合、最も簡単な方法は次のとおりです。

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]
于 2009-10-25T06:25:11.577 に答える
2

整数の代わりに名前を使用してデータにアクセスする最も簡単な方法は、辞書を使用することです

data = {'pig':[1, 2], 'cow':[3, 4], 'dog':[5,6]}

if data in range(2):
    if data['dog'][1]==4:...

他の方法もあります。たとえば、クラスを作成してオーバーライドできます__getitem__。または、変数名を のように 2 次元配列の列番号に割り当てることもできますdog=2。それはすべて、あなたが何をしたいかによって異なります。

于 2009-10-25T04:34:49.613 に答える
0

あなたがしたいことは、常に添え字を使用するのではなく、変数に列を格納してから参照することだと思います。簡単です:

varName=data[columnName]

その列への結果的なアクセスについてvarName[rowName]は、トリックを行う必要があります

于 2009-10-25T03:26:22.730 に答える