像frozenset这样的数据结构,它维护插入顺序?

2024-04-29 08:34:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要具有以下属性的类似集合的数据结构:

  • 散列
  • 没有重复的元素
  • 维持秩序
  • 不变的
  • 宜人的
  • 标准库的一部分?想保持简单吗

正在发生的事情:

frozenset([3,1,2,2,3]) -> frozenset(1,2,3)

我需要的是:

frozenset*([3,1,2,2,3]) -> frozenset*(3,1,2)

我想我可以用frozenset,但这两种设置和frozenset都可以 重新排列元素。我想这是为了更快的重复检查? 但无论如何,我不能重新订购


Tags: 元素数据结构标准属性事情frozenset
1条回答
网友
1楼 · 发布于 2024-04-29 08:34:33

从Python 3.7开始,DICT不再对元素重新排序,而是保证保留插入顺序。您可以使用dict,其中键是设置的项,而值被忽略

>>> dict.fromkeys([3,1,2,2,3])
{3: None, 1: None, 2: None}

dict不是冻结的,因此如果这很关键,那么您可以首先将所有项放入dict,然后从键构建元组

>>> tuple(dict.fromkeys([3,1,2,2,3]).keys())
(3, 1, 2)

这将非常接近frozenset。主要区别在于,检查一个项是否在元组中需要O(n)而不是O(1)时间

相关问题 更多 >