Python列表的转换

a = [1, 1, 2, 2, 2, 3]
元素已排好序
希望变成:
b = [2, 4, 5]
即按照出现次数累加
怎么写比较简洁高效?

阅读 3.5k
2 个回答
python
import collections counter = collections.Counter([1, 1, 2, 2, 2, 3]) print counter >>> Counter({2: 3, 1: 2, 3: 1})
>>> valdict = dict((k, len(list(g))) for k, g in groupby(sorted(a)))
>>>
>>> for key, val in valdict.items(): print key, ":", val
...
1 : 2
2 : 3
3 : 1
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题