【问题标题】:Is there a Python data structure which is sortable and searchable?是否有可排序和可搜索的 Python 数据结构?
【发布时间】:2011-05-25 16:08:49
【问题描述】:

我正在使用 python 来管理要处理的字符串队列。它有几个要求:

  • 每个字符串都与一个优先级匹配,并仅根据该值进行处理。
  • 可以动态地将字符串添加到此队列中,但队列中不允许出现重复的字符串。如果提交了副本,则必须对其进行识别和忽略。

那么是否有任何 python 数据类型允许这样的事情?还是我必须自己写?

如果没有原生的,那么我正在考虑维护两个结构。

  1. heapq 将维护字符串及其优先级
  2. list 维护字符串的哈希值以检查字符串是否已存储

只要这些不同步,它应该可以解决问题。

【问题讨论】:

  • 为什么不用字典?还是ordereddict?
  • @utdmr:按值对字典进行排序并不是那么好。

标签: python list data-structures priority-queue


【解决方案1】:

这听起来是一个合理的方法。我会使用set 而不是list,因为它具有更有效的成员资格检查,并且您不需要维护秩序(因为您是在 heapq 中进行的)

【讨论】:

  • 绝对应该使用set
【解决方案2】:

有序的字典可能会有所帮助。

查看此页面 (an ordered dictionary),其中声明:

有序字典以插入顺序保持键。这有时被称为创建的订单字典。

字典有一些潜在的用例可以保持其键的顺序,但排序基于其他标准。

您可以使用 setkeys 方法更改顺序,但您可能更喜欢使用这些不同标准的字典。例如,您可能需要一个按最后访问键的顺序保存键的字典。

【讨论】:

  • 所以我将字符串作为键和值作为字符串的优先级,然后我可以根据键的值进行排序?如何检查队列中是否已经存在字符串?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
  • 2023-04-06
  • 2015-05-01
  • 2017-12-16
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多