2016-12-19 4 views
1

.index()を使用して2Dリストの列を検索し、その行の位置を返してその場所でデータを変更できるようにしたいとします。私はこれ以下の小さなバージョンを解決しようとしてきました。値文字列が存在するにもかかわらずインデックス文字列でエラーが発生する

data_test = [["2016-12-14T07:39:00.000000Z",0],["2016-12-14T07:40:00.000000Z",1],\ 
      ["2016-12-14T07:41:00.000000Z",2], ["2016-12-14T07:42:00.000000Z",3]] 


string = "2016-12-14T07:39:00.000000Z" 
if data_test[0][0] == string: 
    print('works') 
else: 
    print("does not work") 

print(data_test.index(string)) 

文字列が、それはそこに何も悪いことではありませんので、テスト作品を比較したが、戻って以下のインデックス・テスト:

ValueError: '2016-12-14T07:39:00.000000Z' is not in list 

フル稼働で、私は、数千行のリストをチェックしますだから、私は各レベルでのループ比較と文字列比較を避けようとしています。どのような代替案や助けも高く評価されます。

+1

'my_stringの中にmy_stringがあれば列挙する(data_test)' 'my_string.'を含むリストのリストを与える' for'ループを 'for'ループにすることができますあなたが最初のものだけを必要とするならば –

答えて

0
data_test = [["2016-12-14T07:39:00.000000Z",0],["2016-12-14T07:40:00.000000Z",1], 
      ["2016-12-14T07:41:00.000000Z",2], ["2016-12-14T07:42:00.000000Z",3]] 


string = "2016-12-14T07:39:00.000000Z" 
for i, data in enumerate(data_test): 
    if data[0] == string: 
     print("works, index {}".format(i)) 
    else: 
     pass 

インデックスで何をしたいのかよくわからないので、これは非常に非効率的な方法です。リストを変換したい場合は、一度反復していくうちにリストを再構築して、変換していくことが望ましいかもしれません。

編集: data_testはネストされたリストなので、データ構造を複数の行に分割できるので、\は不要です。また、リストを再構築しない場合は、else句を完全に省略することもできます。私はあなたがいると仮定します。

0

あなたが探している文字列はdata_testではなく、data_test [0]にあるので、明らかにdata_test.indexが見つかりません。