0
我觉得这已经被问过了,但问题的答案对我的代码没有效果。Python:按字母顺序对列表进行排序/分组
我想根据第一个列表[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)
感谢您的任何帮助。
你的例子适用于我,既有排序又有排序。 – badzil
您可能也可以使用:'key = lambda x:x [2:]'作为排序关键字。 – mgilson