我有类似的数据
[2, 2, 2, 2, 2, 3, 13, 113]
然后我想通过自己生成的键将其分类到单独的列表中。事实上,我想生成所有可能的列表。
一些例子:
values: [2, 2, 2, 2, 2, 3, 13, 113]
keys: [0, 0, 1, 2, 1, 3, 3, 1]
sublists: [2, 2], [2, 2, 113], [2], [3, 13]
values: [2, 2, 2, 2, 2, 3, 13, 113]
keys: [0, 1, 0, 0, 0, 1, 1, 0]
sublists: [2, 2, 2, 2, 113], [2, 3, 13]
values: [2, 2, 2, 2, 2, 3, 13, 113]
keys: [2, 3, 0, 0, 4, 4, 1, 3]
sublists: [2, 2], [13], [2], [2, 113], [2, 3]
所有可能的密钥都由
def generate_keys(prime_factors):
key_size = len(prime_factors) - 1
key_values = [str(i) for i in range(key_size)]
return list(itertools.combinations_with_replacement(key_values, \
len(prime_factors)))
然后我想我可以使用键将值转移到子列表中。这就是我坚持的部分。我认为 itertools.groupby 将是我的解决方案,但经过进一步调查,我认为无法使用我的自定义列表作为 groupby 的键。
如何使用这些键将我的大列表拆分为较小的子列表?甚至可能有一种方法可以在不使用密钥的情况下做到这一点。无论哪种方式,我都不知道该怎么做,并且查看其他 Stack Overflow 问题已经在球场上,但不完全是这个问题。