簡體   English   中英

按字典順序對列表進行排序

[英]Lexicographically sort a list of sets

在python中 - 我有一個la的列表

members = [set(1,2,3), set(2,4,1), set(1,3,2), set(2,1,3)]

我想按字典順序對這些進行排序,而不是(如果可能的話)轉換為元組。

如果它們是元組,我可以簡單地使用:

members.sort()

因為不使用像iter(members[0]).next()這樣的東西就無法訪問索引集iter(members[0]).next()我無法使用sort(key=)語法。 也許我錯過了一些簡單的東西,會使這種語法適用?

我的目標是盡可能避免使用set to tupleset轉換。

編輯:鑒於集合的順序不固定,我發現這是一個有爭議的問題。 下面的大部分答案都涉及到集合中的一些項目。 列表中的某些集合怎么樣? 我要知道這種排序只是一種潛在的實現,因為不能保證內部訂單。

您的請求實際上沒有意義,詞典排序需要定義訂單(對第一個元素進行排序,如果第一個元素等同於比較第二個元素,依此類推),但是set元素不是有序的。

但是你可以定義你的自定義比較函數,但是你真的不清楚你想要做什么(一組中沒有“第一”元素)。

>>> members = [set([1,2,3]), set([2,4,1]), set([1,3,2]), set([2,1,3])]
>>> members.sort(key=sorted)
>>> members
0: [set([1, 2, 3]), set([1, 2, 3]), set([1, 2, 3]), set([1, 2, 4])]

成員= [{1,2,4},{1,2,3},{1,2,3},{1,2,3},{1,2}]
members.sort(key = lambda a:“,”。join(map(str,sorted(a))))
會員
[{1,2},{1,2,3},{1,2,3},{1,2,3},{1,2,4}]

暫無
暫無

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

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