例如,如果我有序列 [1,2,3],那么生成子序列的算法是什么:
[1]
[2]
[3]
[1,2]
[2,3]
[1,2,3]
但不是
[1,3]
也不
[3,2]
然后我希望将这些作为键插入字典中,以及在形成值的数据库中查找这些唯一子集的结果。我想知道你是否可以帮忙?
非常感谢!
>>> 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'
您需要使用元组作为键。