0

これはすでに質問されているように感じますが、質問に対する回答が私のコードではうまくいきませんでした。

最初のリスト [2] に基づいてリストのリストをアルファベット順にソートし、次にリスト [3]、次にリスト [4] などでソートされた一致するエントリ内でソートしようとしています。実際のデータはより大きく、各リストにはより多くのエントリがありますが、例は次のとおりです。

list = [ 
['X_campestris_vesicatoria', 'Bacteria', 'Proteobacteria',
   'Gammaproteobacteria', 'Xanthomonadales', 'Xanthomonadaceae', 'Xanthomonas'],
['Pantoea', 'Bacteria', 'Proteobacteria', 'Gammaproteobacteria',
   'Enterobacteriales', 'Enterobacteriaceae', 'Pantoea'],
['Acidobacterium', 'Bacteria', 'Acidobacteria', 'Acidobacteriales',
   'Acidobacteriaceae', 'Granulicella'],
['S_boydii', 'Bacteria', 'Proteobacteria', 'Gammaproteobacteria',
   'Enterobacteriales', 'Enterobacteriaceae', 'Shigella']]

同様の質問が回答として持っていることのいくつかを試しました:

taxlist.sort(key = lambda row: (row[2],row[3],row[4],row[5]))
print taxlist

しかし、ソートは行われていません。

私が試したときと同じ:

sorted(taxlist, key=lambda x: (x[2],x[3],x[4],x[5]))
print taxlist

リストがソートされたら、これを引き続き使用できますか、それともリストは反復できなくなりますか?

import csv
writer = csv.writer(sys.stdout, delimiter="\t")
writer.writerows(taxlist)

助けてくれてありがとう。

4

1 に答える 1

0

sortedL.sortその場でソートしながら、新しいリストを提供しますL。どちらの場合も、元のリストは引き続きアクセス可能であり、反復できます。

を使用している場合でもsorted、古いリストは引き続きアクセス可能であり、反復できます。返されるリストもアクセス可能であり、繰り返し処理できます。

それが役立つことを願っています

于 2012-06-05T21:02:26.460 に答える