Python如何计算重复的组?

Python如何计算重复的组?,python,Python,我是python新手,我面临的问题是如何计算重复组。例如,给出如下列表: [“向下”、“向下”、“向下”、“向上”、“向右”、“向右”、“向下”、“向下”] 我必须计算以下各项: [('down',3),('up',1),('right',2),('down',2)] 或者更确切地说,我如何从java/c等语言中以pythonic的方式实现这一点 编辑:由于我似乎没有充分阐明我的问题,我不想计算列表中所有出现的,例如down,但只计算那些相邻的(如果这是正确的措辞),因此计数器(我的列表)不会给

我是python新手,我面临的问题是如何计算重复组。例如,给出如下列表:

[“向下”、“向下”、“向下”、“向上”、“向右”、“向右”、“向下”、“向下”]

我必须计算以下各项:

[('down',3),('up',1),('right',2),('down',2)]

或者更确切地说,我如何从java/c等语言中以pythonic的方式实现这一点

编辑:由于我似乎没有充分阐明我的问题,我不想计算列表中所有出现的,例如
down
,但只计算那些相邻的(如果这是正确的措辞),因此
计数器(我的列表)
不会给出所需的输出

使用:

使用:

试试这个:

from itertools import groupby
[(c,len(list(cgen))) for c,cgen in groupby(a)]
试试这个:

from itertools import groupby
[(c,len(list(cgen))) for c,cgen in groupby(a)]

您希望得到什么样的数据结构?因为你问的不是有效的。应该是{'down':3,'up':1,'right':2,'down':2}对吗?就像JavaMap中的Hashmap仍然无效一样,一次中不能有两次“down”dict@MaorRefaeli对不起,我希望现在使用元组会更好。元组列表对于您的实现来说是更好的数据结构您希望得到什么样的数据结构?因为你问的不是有效的。应该是{'down':3,'up':1,'right':2,'down':2}对吗?就像JavaMap中的Hashmap仍然无效一样,一次中不能有两次“down”dict@MaorRefaeli很抱歉,我希望现在使用元组很好。元组列表对于您的实现来说是一个更好的数据结构。您能详细说明一下该解决方案的工作原理吗?
groupby
提供了一组相同的元素,如:
[('down',),('up',),('right',),('down',)]
因此,对于每个打印元素和组的长度。能否请您详细说明该解决方案是否有效?
groupby
为组提供相同的元素,如:
[('down',),('up',),('right',),('down',)]
因此,对于每个打印元素和组的长度。