例如,如果我有序列[1,2,3],那么生成子序列的算法是什么:
[1]
[2]
[3]
[1,2]
[2,3]
[1,2,3]
但不是
[1,3]
,也不
[3,2]
然后我希望将这些作为键插入到字典中以及在形成值的数据库中查找这些唯一子集的结果。我想知道你是否可以提供帮助?
非常感谢!
答案 0 :(得分:3)
>>> x = [1, 2, 3]
>>> [x[a:b + 1] for a in range(len(x)) for b in range(a, len(x))]
[[1], [1, 2], [1, 2, 3], [2], [2, 3], [3]]
或者按照您要求的顺序获取它们:
>>> [x[a : a + n] for n in range(1, len(x) + 1)
for a in range(0, len(x) - n + 1)]
[[1], [2], [3], [1, 2], [2, 3], [1, 2, 3]]
然后我希望将这些作为键插入字典
您不能将列表用作字典中的键,因为字典要求其键是可清除的,并且您不能对列表进行哈希处理。
>>> {[1] : 'foo'}
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
{[1] : 'foo'}
TypeError: unhashable type: 'list'
您需要使用元组作为密钥。