当前位置: 首页 > 面试题库 >

OrderedDict在Python 3.7中会变得多余吗?

梁明辉
2023-03-14
问题内容

从Python 3.7 changelog中:

dict对象的插入顺序保留性质已声明是Python语言规范的正式组成部分。

这是否意味着OrderedDict将变得多余?我能想到的唯一用途是保持与旧版本Python的向后兼容性,而旧版本的Python不保留常规词典的插入顺序。


问题答案:

不,它不会在Python
3.7中变得多余,因为OrderedDict它不仅dict保留插入顺序,而且还提供依赖顺序的方法OrderedDict.move_to_end(),并支持reversed()迭代*。

此外,与的相等比较对OrderedDict顺序敏感dict,例如在Python 3.7中,情况并非如此:

>>> OrderedDict([(1,1), (2,2)]) == OrderedDict([(2,2), (1,1)]) 
False
>>> dict([(1,1), (2,2)]) == dict([(2,2), (1,1)]) 
True

*为Python 3.8添加了reversed()对常规Python迭代的支持dict,请参见issue33462



 类似资料:
  • 问题内容: 有人可以向我解释为什么会给我“局部变量是冗余错误”吗? 问题答案: 有人可以向我解释为什么会给我“局部变量是冗余错误”吗? 因为您可以不使用局部变量而简单地编写此代码。 因此,局部变量是不必要的/多余的。 但是,我推测这不是编译器 错误 。它可能是编译器 警告 ,或更可能是样式检查器或错误检查器警告。您可以忽略它,而不必担心编写代码的正确性。 另外,我可以预测,一旦代码(通过现代的Ho

  • 问题内容: 我正在尝试通过 “深度” 键对OrderedDict中的OrderedDict进行排序。有什么解决方案可以对Dictionary进行排序吗? 排序的字典应如下所示: 知道如何获得它吗? 问题答案: 由于按插入顺序排序,因此您必须创建一个新的。 在您的情况下,代码如下所示: 有关更多示例,请参见http://docs.python.org/dev/library/collections.

  • 一、会员余额 1、商城订单支出:指该商场目前支出的订单金额数。 2、商城订单退还:指该商场目前的退款金额。 3、兑换:指该商场兑换出的金额。 4、充值:指所有会员的充值金额。 5、调整:指在会员列表中账户调整的调整余额做的调整的显示。 6、提现:指会员的提现总额。 7、提现退还:指会员提现后退还的金额。 8、查看会员的具体信息:此列表是以前改动后的具体展示以及说明。 会员昵称(指某个改动信息的昵称

  • 问题内容: 我们在IIS7.5后面使用Tomcat6.29,并带有spring,hibernate和struts2框架。我们现在开始注意到服务器会话变得混乱起来,尤其是在Ajax请求中。 有关该问题的更多详细信息 用户1请求page1,用户2请求page2。但是user1获得服务page2,而user2获得服务器page1。 会话ID也在更改,但是在刷新页面时,将提供正确的页面。 当用户数量很多时

  • 问题内容: 我可以在python中扩展语法以获取其他字典的dict理解,例如模块中的OrderedDict或继承自我的类型吗? 仅仅重新绑定名称显然是行不通的,理解语法仍然为您提供了理解和文字的普通旧字典。 那么,如果可能的话,我将如何去做呢?如果它仅适用于CPython,就可以了。对于语法,我想我会像在上那样使用前缀尝试。 注意: 当然,我们可以使用生成器表达式来代替,但是我更感兴趣的是查看py

  • 我正面临一个使用Vue呈现字符串的问题。当前,如果HTML标记在不同的行上打开和关闭,例如。 它的呈现方式如下 这导致返回包含冗余空白的字符串。例如。 我发现如果你打开和关闭HTML标签包含一个字符串在同一行,问题就没有了。例如。 问题:我是否可以强制Vue在不设置所有实际HTML格式的情况下呈现没有额外空格的文本,这意味着在不同的行上打开和关闭标签?(我并不是一个人在做这个项目)或者,我能以某种