Python 有一个 有序的字典。有序集呢?
原文由 Casebash 发布,翻译遵循 CC BY-SA 4.0 许可协议
答案是否定的,但您可以使用 Python 标准库中的 collections.OrderedDict
和键(以及 None
)来达到相同的目的。
更新:从 Python 3.7(和 CPython 3.6)开始,标准 dict
保证保留顺序 并且比 OrderedDict
性能更高。 (然而,为了向后兼容,尤其是可读性,您可能希望继续使用 OrderedDict
。)
下面是一个示例,说明如何使用 dict
作为有序集,在保留顺序的同时过滤掉重复项,从而模拟有序集。使用 dict
类方法 fromkeys()
创建一个字典,然后简单地要求 keys()
返回。
>>> keywords = ['foo', 'bar', 'bar', 'foo', 'baz', 'foo']
>>> list(dict.fromkeys(keywords))
['foo', 'bar', 'baz']
原文由 jrc 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
4 回答937 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
有一个 有序集(可能是 新链接)配方,这是从 Python 2 文档 中引用的。这在 Py2.6 或更高版本和 3.0 或更高版本上运行,无需任何修改。界面几乎与普通集合完全相同,除了初始化应该用列表完成。
这是一个 MutableSet,因此
.union
的签名与 set 的签名不匹配,但由于它包含__or__
可以轻松添加类似内容: