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

时间:2014-02-02 22:03:49

标签: python python-2.7 dictionary hashable

我正在尝试在Python中实现Apriori算法... http://codeding.com/articles/apriori-algorithm

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

frequentItemSets[ k-level : itemSetDictionary]
                            |
                            |__
                               itemSetDictionary[ listOfItems : supportValueOfItems]
                                                  |
                                                  |__
                                                     list of integers, sorted lexicographically

我需要跟踪任意数量的集合,这些集合的基数(k级别)以及我为每个集合计算的值。我认为使用所有集合的列表将是一个好主意,因为它们维护顺序并且是可迭代的。我尝试使用列表作为itemSetDictionary中的键,如上所示,但现在我看到可迭代的数据结构不允许成为Python字典的键。

我正试图找出解决此问题的最快方法。我知道我可以创建一些类,以便键现在是对象,而不是可迭代的数据结构,但我觉得这需要花费很多时间来改变。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

字典键必须为hashable,可用的要求为immutable。它们是否可迭代是无关紧要的。

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