[英]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 tuple
來set
轉換。
編輯:鑒於集合的順序不固定,我發現這是一個有爭議的問題。 下面的大部分答案都涉及到集合中的一些項目。 列表中的某些集合怎么樣? 我要知道這種排序只是一種潛在的實現,因為不能保證內部訂單。
您的請求實際上沒有意義,詞典排序需要定義訂單(對第一個元素進行排序,如果第一個元素等同於比較第二個元素,依此類推),但是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.