如何根据列表中的相同设置值对列表列表进行排序?

mar*_*lon 3 python sorting list set

a = [['a', 'b'], ['b'], ['b', 'a']]
Run Code Online (Sandbox Code Playgroud)

因为第一个和第三个元素是相同的,如果将它们转换为集合,我想对列表 'a' 进行排序,以便具有相同集合值的任何两个元素彼此相邻。对于上面的示例,排序结果将是:

a = [['a', 'b'], ['b', 'a'], ['b']]
Run Code Online (Sandbox Code Playgroud)

或者

a = [['b'], ['a', 'b'], ['b', 'a']]
Run Code Online (Sandbox Code Playgroud)

Mad*_*ist 5

你可以list(set(x))用作你的钥匙。由于这强加的顺序有点随意,您可以添加sorted到组合中:

a = [['a', 'b'], ['b'], ['b', 'a']]
a.sort(key=lambda x: sorted(set(x)))
Run Code Online (Sandbox Code Playgroud)

请注意,key=sorted由于处理重复元素的方式,这与 using 不同。