假设有一个列表,其中包含多个元组,每个元组都表示两个值,它们可以互换使用。例如,(a, b) 和 (b, a) 是等效的。
我们可以将元组的值进行排序,以便在分组时可以使用相同的键。然后,使用 collections 模块中的 defaultdict 来创建一个字典,将具有相同键的元素添加到相应的值列表中。
示例代码如下:
from collections import defaultdict
lst = [('a', 'b'), ('b', 'a'), ('c', 'd'), ('e', 'f'), ('f', 'e')]
groups = defaultdict(list)
for t in lst:
key = tuple(sorted(t))
groups[key].append(t)
print(list(groups.values()))
输出:
[[('a', 'b'), ('b', 'a')], [('c', 'd')], [('e', 'f'), ('f', 'e')]]
代码中,我们首先创建了一个空的 defaultdict,然后遍历列表中的元素。对于每个元组,我们使用 sorted 函数创建一个排序后的元组,并将其用作字典的键。然后,我们将原始元组添加到值列表中。最后,我们打印所有值列表。
这样,我们就可以按可互换使用的值对进行分组。
上一篇:按客户端分离用户存储
下一篇:按客户ID分组