繁体   English   中英

Python 按相同编号分组列表

[英]Python group list by same numbers

我需要 python function 方面的帮助,如果它们被另一个数字分隔,它将计算列表中有多少重复数字。

nums = [3, 1, 2, 3, 2, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 2]

应该返回

{
[3]: 2,
[1]: 3,
[2]: 5,
[1, 1]: 2,
[2, 2, 2, 2]: 1
}

您可以使用itertools.groupby收集连续数字和collections.Counter来统计它们:

nums = [3, 1, 2, 3, 2, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 2]

from itertools import groupby
from collections import Counter
dict(Counter(tuple(g) for k,g in groupby(nums)))

注意。 您不能将列表用作字典键,而是使用元组

Output:

{(3,): 2,
 (1,): 3,
 (2,): 5,
 (1, 1): 2,
 (2, 2, 2, 2): 1}

请注意,您不能将列表作为键。 相反,我们可以使用字符串。

这将返回所有长度的条纹,而不仅仅是最大值和最小值。 如果您愿意,请在评论中说。

nums = [3, 1, 2, 3, 2, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 2]
results = {}
streak = 0
previous = None
for num in nums:
    print(num)
    if previous != num:
        streak = 0
    streak += 1
    previous = num
    for i in range(1, streak + 1):
        results[str(num)*i] = results.get(str(num)*i, 0) + 1

如果您需要解释,请发表评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM