簡體   English   中英

排序python中的列表列表

[英]sorting list of list in python

我在python中有一個列表 -

[['C'], ['B'], ['A'], ['C', 'B'], ['B', 'A'], ['A', 'C']]

我想按照以下方式對其進行排序 -

[['A'], ['B'], ['C'], ['A', 'B'], ['A', 'C'], ['B', 'C']]

首先對列表中的各個項進行排序,然后根據長度排序排序列表,然后根據實際元素本身對排序列表進行排序

>>> data = [['C'], ['B'], ['A'], ['C', 'B'], ['B', 'A'], ['A', 'C']]
>>> sorted((sorted(item) for item in data), key=lambda x: (len(x), x))
[['A'], ['B'], ['C'], ['A', 'B'], ['A', 'C'], ['B', 'C']]

這是有效的,因為默認情況下,字符串列表將按字典順序排序。 在您的情況下,當內部列表被排序時,外部列表首先根據列表的長度進行排序,如果它們相同,則字符串本身的實際元素將用於比較。


這可以逐步理解。 第一個單獨的元素排序導致了這一點

>>> [sorted(item) for item in data]
[['C'], ['B'], ['A'], ['B', 'C'], ['A', 'B'], ['A', 'C']]

現在,我們需要首先根據長度按升序排序,然后對元素進行排序。 因此,我們將自定義函數傳遞給外部排序函數lambda x: (len(x), x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM