Python 如何比较同一元组列表中出现的情况

Python 如何比较同一元组列表中出现的情况,python,list,dictionary,tuples,counter,Python,List,Dictionary,Tuples,Counter,我有一个元组列表,如下所示: L=[(23,56,48)、(48,93,81)、(48,56,23)、(54,34,21)、(48,98,71)、(98,71,48)、(56,23,48)] 有些元组的数字完全相同,但顺序不同。我想计算元组的出现次数,并覆盖其中具有相同值的元组。我在这里读了几个答案,我设法用反方法做了一些事情。但我尝试的似乎对我不起作用。我是python新手,所以可能不了解计数器方法的确切用法 L1 = Counter() for item in L: for elem

我有一个元组列表,如下所示:
L=[(23,56,48)、(48,93,81)、(48,56,23)、(54,34,21)、(48,98,71)、(98,71,48)、(56,23,48)]
有些元组的数字完全相同,但顺序不同。我想计算元组的出现次数,并覆盖其中具有相同值的元组。我在这里读了几个答案,我设法用反方法做了一些事情。但我尝试的似乎对我不起作用。我是python新手,所以可能不了解计数器方法的确切用法

L1 = Counter()
for item in L:
    for element in item:
        if element in item:
            L1[tuple(item)] = L1[tuple(item)] + 1
print(L1)
我得到的结果是:

Counter({(23, 56, 48): 3, (48, 93, 81): 3, (48, 56, 23): 3, (54, 34, 21): 3, 
(48, 98, 71): 3, (98, 71, 48): 3, (56, 23, 48): 3})
我想得到的结果是:

Counter({(23, 56, 48): 3, (48, 98, 71): 3, (48, 93, 81): 1, (54, 34, 21): 1})

您需要将具有相同值的元组映射到同一个键,一种方法是对元组进行排序(使用):

输出

Counter({(23, 48, 56): 3, (48, 71, 98): 2, (21, 34, 54): 1, (48, 81, 93): 1})

“覆盖内部具有相同值的元组”是什么意思?可能我无法很好地解释,请参阅实际结果和预期结果以获取帮助,包含相同数字但顺序不同的元组必须作为相同的元组集()来计算,而不是比较元组。顺序不重要,这是上下文,我试着尽可能简单地问我的问题……我不知道set()做什么,也不知道如何使用它,我会试着看看它是如何工作的Counter是一本字典,不能使用set作为键-它可以使用frozenset,尽管:
Counter(frozenset(t)代表L中的t)
应该会给你想要的。也许
Counter(frozenset(t)对于L中的t)
?不确定什么会更高效。是的,这可能是另一种选择。正如我所说的,对python来说是个新问题,我根本没有想过使用map之类的东西。谢谢,我会看看它是如何工作的,并试着去理解它。
Counter({(23, 48, 56): 3, (48, 71, 98): 2, (21, 34, 54): 1, (48, 81, 93): 1})