使用有序字典作为有序集
问题描述
现在,Python3.7编写了保持顺序的字典officially part of the language spec,而不是实现细节,我一直在想如何最好地使用这个属性。今天,我发现我需要一个保持秩序的集合,我想词典可能会做到这一点。
假设我们有一个Hasable元素列表。我们想要一个唯一条目的列表,并希望根据第一次出现来保持这些条目的顺序。一个简单的字典构造函数应该可以做到这一点:
ls = "Beautiful is better than ugly. Explicit..."
uniques = list({s:0 for s in ls})
>>> ['B', 'e', 'a', 'u', 't', 'i', 'f', 'l', ' ', 's', 'b', 'r', 'h', 'n', 'g', 'y', '.', 'E', 'x', 'p', 'c']
这将保留按第一次出现的顺序,并删除所有重复项。
我想知道社区对这个用例和总体上的顺序保存功能有什么看法。
- 有什么原因不应该使用此方法吗?
- 是否有更好的方法来解决此问题?
- 此方法是Pythonic吗?
读着巨蟒的禅宗,我很矛盾。该方法简单,但依赖于隐式排序。
请告诉我你的想法。谢谢。
解决方案
这种使用Python3.7词典作为保持顺序的重复数据删除的方法是由核心开发人员here审查的。你不可能得到比这更好的推荐了。
有什么原因不应该使用此方法吗?
否
有没有更好的方法来解决这个问题?
否
此方法是Pythonic吗?
是。
该方法简单,但依赖于隐式排序。
您的问题被标记为python-3.7。确保词典保持插入顺序,因此这里没有隐式顺序。
相关文章