Python:按字母顺序对列表进行排序/分组

时间:2012-06-05 20:58:12

标签: python list sorting

我觉得这已经被问过,但问题的答案对我的代码没有用。

我正在尝试按照第一个列表[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)

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

sorted为您提供了一个新列表,而L.sortL进行了排序。在这两种情况下,原始列表仍然可以访问并且可以迭代。

即使您使用sorted,旧列表仍然可以访问并且可以迭代。返回的列表也是可访问的,可以迭代。

希望有所帮助