Python 试图在算法中实现列表作为字典键,什么';什么是快速解决方案?

Python 试图在算法中实现列表作为字典键,什么';什么是快速解决方案?,python,python-2.7,dictionary,hashable,Python,Python 2.7,Dictionary,Hashable,我正在尝试实现Apriori算法。。。在Python中 最高级别的数据结构如下所示: frequentItemSets[ k-level : itemSetDictionary] | |__ itemSetDictionary[ listOfItems : supportValueOfItems]

我正在尝试实现Apriori算法。。。在Python中

最高级别的数据结构如下所示:

frequentItemSets[ k-level : itemSetDictionary]
                            |
                            |__
                               itemSetDictionary[ listOfItems : supportValueOfItems]
                                                  |
                                                  |__
                                                     list of integers, sorted lexicographically
我需要跟踪任意数量的集合、这些集合的基数(k级)以及我为每个集合计算的值。我认为为所有集合使用一个列表将是一个好主意,因为它们保持了顺序并且是可移植的。我尝试使用列表作为itemSetDictionary中的键,正如您在上面所看到的,但是现在我看到在Python字典中不允许iterable数据结构作为键

我正试图找出解决这个问题的最快方法。我知道我可以创建一些类,使键现在成为对象,而不是可移植的数据结构,但我觉得这需要花很多时间来更改

有什么想法吗?

字典键必须是可用的,这就要求它们是可用的。它们是否合适并不重要


在这种特殊情况下,您可能希望使用s作为键。

我看到元组是不可变的,并且是有序的,我想元组可以工作吗?我需要项目集为它们的元素提供一个顺序。@Gthoma2:是的,元组也可以工作,例如frozensets的元组。元组只在它们还包含不可变数据结构的情况下工作。i、 例如,
(({1,2},{3,4}))
仍然不能用作键,即使它是元组,因为元组包含可变集。是的--可以使用冻结集。您还可以执行
str({ur set})
并使用集合的字符串作为键,因为字符串是可散列的。