【发布时间】:2016-06-07 20:24:37
【问题描述】:
我想使用诸如“顺序无关紧要的字符”之类的东西作为在 Python 中构建字典的关键。
就像 "abc" 和 "cba" 可以给我相同的哈希索引,而 "aab" 和 "ab" 给我不同的哈希索引。
我发现一种方法是使用tuple(sorted(my_string)) 对字符列表进行哈希处理,但它可能需要 O(NlogN) 时间复杂度。
我尝试使用Counter,但它不是可散列的。 Frozenset 是可散列的,但它不允许重复。
有没有更好的方法(O(N) 时间复杂度)来替换tuple(sorted(my_string))?
以上如有错误请指正。谢谢!
【问题讨论】:
-
只需使用
''.join(sorted(my_string))。元组是不必要的。 O(N log N) 算法没有任何问题——许多算法都是 O(N log N),但我们仍然使用它们。 -
什么是
triple?你的意思是tuple? -
@interjay 对不起,这是一个错字。是的,我的意思是
tuple
标签: python algorithm sorting data-structures set