为什么 python 字典会改变顺序?

2023-12-02

python3.5中字典中存储的对象的顺序随着解释器的不同执行而变化,但对于同一个解释器实例似乎保持不变。

$ python3 <(printf 'print({"a": 1, "b": 2})\nprint({"a": 1, "b": 2})\nprint({"a": 1, "b": 2})\nprint({"a": 1, "b": 2})')
{'b': 2, 'a': 1}
{'b': 2, 'a': 1}
{'b': 2, 'a': 1}
{'b': 2, 'a': 1}
$ python3 <(printf 'print({"a": 1, "b": 2})\nprint({"a": 1, "b": 2})\nprint({"a": 1, "b": 2})\nprint({"a": 1, "b": 2})')
{'a': 1, 'b': 2}
{'a': 1, 'b': 2}
{'a': 1, 'b': 2}
{'a': 1, 'b': 2}

我一直认为顺序是基于密钥的哈希值的。为什么Python的不同执行顺序不同?


词典的使用hash函数和顺序is基于密钥的哈希值。

但是,正如某处所述本次问答,从python 3.3开始,哈希的种子是在执行时随机选择的(更不用说这取决于python版本)。

请注意,从 Python 3.3 开始,还使用随机哈希种子,使哈希冲突变得不可预测,以防止某些类型的拒绝服务(攻击者通过引起大量哈希冲突使 Python 服务器无响应)。这意味着给定字典的顺序也取决于当前 Python 调用的随机哈希种子。

因此,每次执行程序时,您可能会得到不同的顺序。

由于无法保证字典的顺序(无论如何在 python 3.6 之前都不会),因此这是您不应该考虑的实现细节。

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

为什么 python 字典会改变顺序? 的相关文章

  • 使用多个具有不同日志级别的处理程序时出现意外的 python 记录器输出

    我正在尝试将数据记录到 stderr 并记录到文件中 该文件应包含all日志消息 并且 stderr 应该只转到命令行上配置的日志级别 这在日志记录指南中多次描述 但它似乎对我不起作用 我创建了一个小测试脚本来说明我的问题 usr bin
  • Python - 定义常量列表或字典的最佳/最简洁的方法

    第一次使用堆栈溢出 我很高兴来到这里 简介 我最近开始了 Python 编程世界的神奇冒险 我喜欢它 现在 在我从 C 语言的尴尬过渡中 一切都进展顺利 但我在创建与标头文件 h 同义的内容时遇到了麻烦 问题 我有中等大小的字典和列表 大约
  • 在 MacOSX10.6 上运行 python 服务器时 MySQLdb 错误

    运行我的服务器 python manage py runserver 产生以下错误 django core exceptions ImproperlyConfigured 加载 MySQLdb 模块时出错 没有名为 MySQLdb 的模块
  • Flask/Apache 提交按钮用于文件上传

    我有一个在 apache 后面运行的 Flask 应用程序 在我的 index html 页面上有一个文件上传按钮和一个提交按钮 如下所示
  • 如何在 python 中使用 libSVM 计算精度、召回率和 F 分数

    我想计算precision recall and f score using libsvm在Python中 但我不知道如何 我已经发现这个网站 http www csie ntu edu tw cjlin libsvmtools eval
  • PyQt4 信号和槽

    我正在使用 PyQt4 编写我的第一个 Python 应用程序 我有一个 MainWindow 和一个 Dialog 类 它是 MainWindow 类的一部分 self loginDialog LoginDialog 我使用插槽和信号 这
  • 使用opencv+picamera流IO用树莓派捕获视频

    我使用 Raspberry 来简单地显示一个视频 目前仅此 为此 我必须使用 opencv cv2 我尝试了很多解决方案 但现在我想使用 Picamera 库捕获视频 我将向您展示我的代码 import io import time imp
  • 熊猫 style.background_gradient 忽略 NaN

    我有以下代码来转储数据帧results到 HTML 表格中 这样的列TIME FRAMES根据seaborn 的颜色图进行着色 import seaborn as sns TIME FRAMES 24h 7d 30d 1y Set CSS
  • 生产环境的 Flask-Login 与 Flask-Security

    我正在构建一个功能 供用户注册 登录 验证和授权自己 特别是使用 Python Flask 作为后端 我找到了一些解决方案 例如flask login and flask security 据我了解 flask login实际上并没有进行任
  • Pythoncom - 将相同的 COM 对象传递给多个线程

    你好 对于 COM 对象 我是一个完全的初学者 非常感谢任何帮助 我正在开发一个Python程序 该程序应该以客户端 服务器的方式读取传入的MS Word文档 即客户端发送一个请求 一个或多个MS Word文档 服务器使用pythoncom
  • PyCharm 输出错误消息散布在控制台输出中。如何解决这个问题?

    我正在运行 PyCharm 社区版 4 0 4 有谁知道为什么控制台输出后不显示错误消息 Thanks C Python27 python exe F Google Drive code python scripts leetcode lc
  • 使用 python 写入 aws lambda 中的 /tmp 目录

    Goal 我正在尝试将 zip 文件写入 python aws lambda 中的 tmp 文件夹 因此我可以在压缩之前提取操作 并将其放入 s3 存储桶中 Problem 操作系统 Errno30 只读文件系统 这段代码在我的计算机上进行
  • 如何在 scikit-learn 的 SVM 中使用非整数字符串标签? Python

    Scikit learn 具有相当用户友好的用于机器学习的 python 模块 我正在尝试训练用于自然语言处理 NLP 的 SVM 标记器 其中我的标签和输入数据是单词和注释 例如 词性标记 而不是使用双精度 整数数据作为输入元组 1 2
  • 在 Django 中翻译文件时的 Git 命令

    我在 Django 中有一个现有的应用程序 我想在页面上添加翻译 在页面上我有 trans Projects 在 po 文件中我添加了 templates staff site html 200 msgid Projects msgid P
  • Numba jitclass 不适用于 python 列表

    我在用python 3 6 and numba 0 36 这个问题有一个sister https stackoverflow com questions 48159360 numba custom stack class and pop f
  • 如何在 Flask 中获取 POSTed JSON?

    我正在尝试使用 Flask 构建一个简单的 API 现在我想在其中读取一些 POSTed JSON 我使用 Postman Chrome 扩展进行 POST 我 POST 的 JSON 很简单 text lalala 我尝试使用以下方法读取
  • 使用 Tweepy 获取推文时出错

    我有一个用于获取推文的 Python 脚本 在脚本中我使用该库 Tweepy 我使用有效的身份验证参数 运行此脚本后 一些推文存储在我的 MongoDB 中 有些则被 if 语句拒绝 但我仍然收到错误 requests packages u
  • 有效积累稀疏 scipy 矩阵的集合

    我有一个 O N NxN 的集合scipy sparse csr matrix 每个稀疏矩阵都有 N 个元素集 我想将所有这些矩阵加在一起以获得一个常规的 NxN numpy 数组 N 约为 1000 矩阵内非零元素的排列使得所得总和肯定不
  • Scrapy - 持续从数据库中获取要爬取的url

    我想不断地从数据库中获取要爬行的网址 到目前为止 我成功地从基地获取了 url 但我希望我的蜘蛛继续从该基地读取 因为该表将由另一个线程填充 我有一个管道 一旦爬行 工作 就会从表中删除 url 换句话说 我想使用我的数据库作为队列 我尝试
  • 无法在 Python 2.4 中解码 unicode 字符串

    这是Python 2 4 中的 这是我的情况 我从数据库中提取一个字符串 它包含一个变音的 o xf6 此时 如果我运行 type value 它会返回 str 然后我尝试运行 decode utf 8 但收到错误 utf8 编解码器无法解

随机推荐

  • 主要 Xcode 7 Sprite Kit Atlas 错误

    所以今天我决定开始在 El Capitan 和 iOS 9 上测试我的游戏 这是一个大项目 我已经用业余时间从事了近 2 年的工作 所以我将代码移植到 Swift 2 0 单击运行按钮并祈祷 Apple 没有破坏 Sprite Kit 就像
  • 如何使用 Volley 在 Android 中发送“multipart/form-data”POST

    有谁能够完成发送multipart form data在 Android 中使用 Volley 进行 POST 了吗 我尝试上传没有成功image png使用 POST 请求到我们的服务器 我很好奇是否有人这样做 我相信执行此操作的默认方法
  • Web 浏览器控件的进度条

    如何使用 C 语言在 Windows 应用程序项目中放置和使用 Web 浏览器控件的进度条 看着那 这WebBrowser ProgressChanged event
  • 了解 Java 迭代器

    如果我运行以下代码 它将打印出 3 次重复内容 但是当我删除 while 循环内的 if 语句时 只是为了看看它会迭代多少次 它会启动一个无限循环 这实际上如何hasNext 方法有效吗 我认为这只会迭代 5 次 因为列表中有 5 个项目
  • 使用鼠标和触摸通过 Adorner 进行 WPF 拖放

    我希望这是一个好问题 所以我将详细写下我想要实现的目标 我在互联网上找到的内容 并展示我到目前为止所做的事情以及我尝试过的事情 我需要向我的应用程序添加拖放功能 我有图像 基本上是控件 我想将其拖动到列表框的项目 这是示例用户界面 这是我现
  • 我们如何使用 train_on_batch 执行提前停止?

    我在循环中手动运行纪元 并在循环中进一步嵌套小批量 在每个小批量中 我需要调用train on batch 启用定制模型的训练 是否有手动方法来恢复提前停止的功能 即打破循环 在实践中 提前停止 主要是通过以下方式完成的 1 训练 X ep
  • 扩展 BaseRequestOptions 时注入的依赖项未定义

    我正在延长BaseRequestOptions在 Angular2 中为每个请求添加标头 我也有一个Config提供基于域的键 值对的类 我需要将其注入到我的派生类中 import BaseRequestOptions from angul
  • C# - 异步返回值

    private TaskCompletionSource
  • Xdebug 异常类的方法

    是否可以看到 Xdebug 创建的扩展 Exception 类的方法 我想获取 HTML 格式的堆栈跟踪 因此 在破解之后 没有像 Niels 展示的那样的方法 但有一个名为 exception gt xdebug message 的公共属
  • 添加谷歌服务 - 任务“:app:processDebugResources”执行失败

    我正在尝试按照此网站上的步骤在 Android Studio 中实现 GCM 客户端 在 Android 上实现 GCM 客户端 正如 设置 Google Play 服务 中提到的 我编辑了应用程序的 build gradle 文件 使其看
  • ThreeJS 中的弯曲文本对象

    有this回购协议this例如 它已经有近 2 年历史了 因此不适用于 ThreeJS 的最新版本 我遇到以下错误和警告 error THREE Matrix3 getInverse no longer takes a Matrix4 ar
  • Python - 打印列表中既没有逗号也没有撇号的项目

    我的代码的最小工作示例 Create output data file out data file open output file w out data file write Header n out data file close li
  • 恰好具有 k 个颜色边的生成树

    我有一个连通的无向图 其边为黑色或白色 并且有一个整数 k 我正在尝试编写一个算法来判断是否存在具有正好 k 个黑边的生成树 不一定必须找到实际的树 我使用克鲁斯卡尔算法来查找生成树中黑边的最小和最大可能数量 如果 k 超出此范围 则不存在
  • 手动触发IOptionsMonitor<>.OnChange

    在 ASP NET Core 2 1 中 我使用 IOptionsMonitor 并对其进行设置 以便我可以在更改 appSettings json 文件时成功获取事件 所以这是有效的 我现在想做的是通过代码手动更改选项中的一些值 并触发我
  • 带有数据流的 Apache Beam Go SDK

    我一直在使用 Go Beam SDK v2 13 0 但无法获取字数统计示例致力于 GCP 数据流 它进入崩溃循环尝试启动org apache beam runners dataflow worker DataflowRunnerHarne
  • C++:typeid 忽略低级 const 引用,但不忽略指针

    考虑以下代码 int main const int i 42 auto p i p is const int const is low level const auto q i q is const int reference to con
  • 计算三角形第三个点的坐标

    好吧 我知道这听起来应该在 math stackoverflow com 上问 但这是我在高中时忘记的令人尴尬的简单数学 而不是高级研究生的东西 我正在做一些图形编程 我有一个三角形 顺便说一句 这个三角形的两条边相等 但我不确定这是否相关
  • Oracle SQLPLUS - 当假脱机超过 50,000 条记录时,如何仅输出一次标头?

    我正在将一个大结果假脱机到磁盘 并且只想包含一次标头 我只需要一次标题 而不是每 50 000 条记录 根据文档 在第二次打印标题之前 我似乎限制为 50 000 条记录 根据文档 50 000 是最高值 我尝试将页面大小设置为零并打开标题
  • 将 ASP.NET MVC HttpContext 发送到 Web Api HttpContext

    我正在尝试上传文件 并且想将当前的 MVC HttpContext Current Request Files 传递给 Web API 我试图通过HttpFileCollectionBase作为参数将其传递给 API 但它始终为 null
  • 为什么 python 字典会改变顺序?

    python3 5中字典中存储的对象的顺序随着解释器的不同执行而变化 但对于同一个解释器实例似乎保持不变 python3 lt printf print a 1 b 2 nprint a 1 b 2 nprint a 1 b 2 nprin