-2

例如,如果我有序列 [1,2,3],那么生成子序列的算法是什么:

[1]
[2]
[3]
[1,2]
[2,3]
[1,2,3]

但不是

[1,3]

也不

[3,2]

然后我希望将这些作为键插入字典中,以及在形成值的数据库中查找这些唯一子集的结果。我想知道你是否可以帮忙?

非常感谢!

4

1 回答 1

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'

您需要使用元组作为键。

于 2012-02-09T16:09:17.437 回答