使用有序字典作为有序集 [英] Using ordered dictionary as ordered set

查看:15
本文介绍了使用有序字典作为有序集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在,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。确保词典保持插入顺序,因此这里没有隐式顺序。

这篇关于使用有序字典作为有序集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆