在 Python 3.7+ 中更改 dict 中的键顺序

2023-12-12

Since dict对象在 Python 3.7+ 中具有本机键顺序(https://docs.python.org/3/whatsnew/3.7.html),应该有一种方法来管理订单。有官方文档可供我阅读吗?

在我的具体情况下,我想解决这些问题无需创建新字典.

  1. 在开头添加一个新的键值对。
  2. 按键对字典中的记录进行排序。

对于第一个:

dct = {'b': 5, 'c': 6}
dct['a'] = 4  # What should be here
print(dct)  # I want it to be {'a': 4, 'b': 5, 'c': 6}

对于第二个:

dct = {'b': 5, 'c': 6, 'a': 4}
dct.sort_somehow('...')  # What should be here
print(dct)  # I want it to be {'a': 4, 'b': 5, 'c': 6}

如果你必须就地改变字典,可以使用.clear()清除它,然后.update将新值放入。

>>> dct = {'b': 5, 'c': 6, 'a': 4}
>>> sorted_key_values = sorted(dct.items())
>>> dct.clear()
>>> dct.update(sorted_key_values)
>>> dct
{'a': 4, 'b': 5, 'c': 6}

请注意,这仍然消耗与字典中键/值的数量成比例的内存量。就地排序非常困难或不可能(如不使用任何额外内存),请参阅python - 就地排序字典 - VoidCC.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 3.7+ 中更改 dict 中的键顺序 的相关文章

随机推荐

  • ItemsControl 与视图模型的多个数据模板

    是否可以将以画布为模板的项目控件绑定到多个数据模板 我有 2 个集合 根据类型我想在画布上显示不同的控件 我不确定 但我可以考虑一个具有 2 个 ObservableCollections 的 Viewmodel 例如 如果我有 形状 和
  • 从字符串执行命令

    在 r 中使用 scopus 检索引用 library rscopus auth token header please add akey please add set api key akey x abstract retrieval 1
  • 为什么要在 PHP 中使用模板系统? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 为什么要在 PHP 中使用模板系统 我的问题背后的原因是 PHP 本身就是功能丰富的模板系统 为什么我应该安装另一个模板引擎 到目前为止我发现的唯一两个优点是 更简洁的语法 有时 模板引擎
  • Microsoft.AspNetCore.WebUtilities 超出行长度限制 100

    我一直在尝试自动化测试 将文本文件上传到使用 flowjshandler 的 Web api 所有这些都在 c net core 和 linux docker 容器中运行 从 Visual Studio 运行时 测试程序毫无例外地上传文件
  • 谷歌应用程序邀请 - 短信未发送

    我尝试寻找解决方案 但还没有运气 我正在尝试使用谷歌应用程序邀请来邀请朋友使用我的应用程序 android 电子邮件已发送 但短信未发送 我没有收到任何错误消息 事实上我实际上收到一条消息 表明邀请已发送 我还尝试向我的应用程序添加短信权限
  • '(引用引用)在方案中

    我正在尝试自学方案 谁能告诉我为什么 quote quote 将输出 quote and quote quote 将输出 quote 非常感谢 这个表达式 quote quote 扩展后
  • Swift 3 CVarArg 被多次传递的问题

    我在 swift 3 中有以下代码 class StringUtility static func Localizer tableName String gt key String params CVarArg gt String retu
  • 将剪贴板中的图像粘贴到 Excel 中的单元格

    我想使用 vba 将图像从剪贴板粘贴到 Excel 单元格 我可以找到这样的代码 If My Computer Clipboard ContainsImage Then Dim grabpicture My Computer Clipboa
  • Visual Studio 2010 数据源选项中缺少 SQLite 数据库文件类型

    我按照以下说明在 Visual Studio 2010 上安装了 x86 x64 官方 SQLite NuGet 包 http www tsjensen com blog post 2012 11 10 SQLite on Visual S
  • 可以同时从多个程序打开和访问伯克利数据库吗?

    根据 Berkeley 文档 数据库的事务 TS 和并发数据存储版本 多个线程可以访问 和更改 数据库 这是否也意味着我可以有两个程序链接到伯克利 客户端 并让它们访问相同的数据库文件而不会出现任何问题 我问 因为对于单独的数据库服务器来说
  • 当应用程序关闭/终止时 iOS 中的地理围栏

    我正在研究地理围栏 我想触发 是否输入区域 and 退出区域 当应用程序处于前台或后台状态时它正在工作 但我也想在应用程序处于非活动状态时触发它 我的代码如下 地理围栏Class h import
  • Windows 中的 getchar_unlocked 未声明

    这是我的代码 include
  • 无法加载 netezza JDBC 驱动程序

    我在 spring 中配置了 netezza 数据库 我已经在类路径中添加了依赖的nzjdbc jar 弹簧配置
  • 当 jqgrid 位于模态对话框内时,解决 jqgrid 4.8 覆盖问题

    我使用免费的 jqgrid 4 8 我在模式对话框中使用 jqgrid 当我尝试使用寻呼机的删除按钮时 所有对话框都被禁用 http jsfiddle net 9ezy09ep function Ecran dialog dialogCla
  • PHP Http请求

    我需要从 PHP 执行 HTTP GET 更具体地说 从 index php 中 我需要获取 trac 和 svn 的内容 找到 ul 元素 然后渲染 然后内联到 index php 上 trac 和 svn 是相对 URL 而不是文件系统
  • Sendmail插入!电子邮件中间 990 个字符后的符号

    我使用 sendmail v 从 sendmail 发送邮件 电子邮件受保护 https infoeu mytotalconnectcomfort com 我不明白为什么sendmail会插入额外的字符 p Dear Mr Ms scure
  • 如何获取在画布中构成圆的坐标数组?

    因此 如果这是我用来在画布上画圆的代码 ctx beginPath ctx arc centerX centerY radius 0 2 Math PI false ctx lineWidth 3 ctx strokeStyle black
  • 带有特殊字符的Sql查询-如何处理?

    我有几个雇员的名字 比如 john 1 魔鬼的 corn 像这样的东西 现在 当我搜索这些名称时 我正在使用 select from emp where empname like john 1 devil s corn 但我没有得到预期值
  • jQuery AJAX 将 url 作为字符串传递

    我有一个 ajax 函数 它将一串变量传递给我的脚本 但我有一个变量需要包含带有参数的完整 url 发生的情况是 var1 和 var2 成为 POST 变量 但我需要将整个 url 变量保存为字符串 var url http domain
  • 在 Python 3.7+ 中更改 dict 中的键顺序

    Since dict对象在 Python 3 7 中具有本机键顺序 https docs python org 3 whatsnew 3 7 html 应该有一种方法来管理订单 有官方文档可供我阅读吗 在我的具体情况下 我想解决这些问题无需