random.choice 被字典破坏

2024-02-26

The random.choice输入应该是sequence https://docs.python.org/3/glossary.html#term-iterable。这会导致奇怪的行为dict,它不是序列类型,但可以像这样使用下标:

>>> d = {0: 'spam', 1: 'eggs', 3: 'potato'}
>>> random.choice(d)
'spam'
>>> random.choice(d)
'eggs'
>>> random.choice(d)
'spam'
>>> random.choice(d)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/random.py", line 274, in choice
    return seq[int(self.random() * len(seq))]  # raises IndexError if seq is empty
KeyError: 2

此外random.choice根本不起作用set,以及其他一些容器collections module.

有充分的理由吗random.choice(d)不应该以明显的方式工作,返回随机密钥?

我考虑过random.choice(list(d)) and random.sample(d, 1)[0]但希望有更有效的方法。能random.choice在不降低序列当前行为的情况下进行改进?


你可以看到这个线程 http://bugs.python.org/issue15511132006 年的 Python bug 跟踪器上关于 random.choice 不适用于集合的问题。从算法上讲,可以使其以相同的渐近效率工作,但它需要 set/dict 数据结构的自定义支持,或者接口中的新方法。 python 开发人员认为不需要它。

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

random.choice 被字典破坏 的相关文章

  • 检测到通过 ChromeDriver 启动的 Chrome 浏览器

    我正在尝试在 python 中使用 selenium chromedriver 来访问 www mouser co uk 网站 然而 从第一次拍摄开始 它就被检测为机器人 有人对此有解释吗 此后我使用的代码 options Options
  • TensorFlow:带有轴选项的 bincount

    在 TensorFlow 中 我可以使用 tf bincount 获取数组中每个元素的计数 x tf placeholder tf int32 None freq tf bincount x tf Session run freq feed
  • NumPy linalg.eig

    我有这个烦人的问题 但我还没有弄清楚 我有一个矩阵 我想找到特征向量 所以我写 val vec np linalg eig mymatrix 然后我得到了 vec 我的问题是 当我小组中的其他人对相同的矩阵 mymatrix 做同样的事情时
  • 在 python 3 中使用子进程

    我使用 subprocess 模块在 python 3 中运行 shell 命令 这是我的代码 import subprocess filename somename py in practical i m using a real fil
  • 不明白 Swift 中的闭包示例

    我正在尝试了解 swift 和闭包 我被这个例子困住了 numbers map number Int gt Int in let result 3 number return result 什么是 number Int gt Int 它是一
  • 无故运行测试时 PyCharm 抛出“AttributeError: 'module' object has no attribute”

    因此 我有一个 Django REST Framework 项目 有一天它无法在 PyCharm 中运行测试 从命令行我可以使用它们来运行它们paver or the manage py直接地 曾经有一段时间 当我们没有在文件顶部导入类的超
  • ValueError:不支持连续[重复]

    这个问题在这里已经有答案了 我正在使用 GridSearchCV 进行线性回归的交叉验证 不是分类器也不是逻辑回归 我还使用 StandardScaler 对 X 进行标准化 我的数据框有 17 个特征 X 和 5 个目标 y 观察 约11
  • CNTK 抱怨 LSTM 中的动态轴

    我正在尝试在 CNTK 中实现 LSTM 使用 Python 来对序列进行分类 Input 特征是固定长度的数字序列 时间序列 标签是 one hot 值的向量 Network input input variable input dim
  • Pandas:如何将数据框插入 Clickhouse

    我正在尝试将 Pandas 数据框插入 Clickhouse 这是我的代码 import pandas import sqlalchemy as sa uri clickhouse default localhost default ch
  • Alembic:如何迁移模型中的自定义类型?

    My User模型是 class User UserMixin db Model tablename users noinspection PyShadowingBuiltins uuid Column uuid GUID default
  • 如何使用 Bokeh 动态隐藏字形和图例项

    我正在尝试在散景中实现复选框 其中每个复选框应显示 隐藏与其关联的行 我知道可以通过图例来实现这一点 但我希望这种效果同时在两个图中发生 此外 图例也应该更新 在下面的示例中 出现了复选框 但不执行任何操作 我显然不明白如何更新用作源的数据
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • `pyqt5'错误`元数据生成失败`

    我正在尝试安装pyqt5使用带有 M1 芯片和 Python 3 9 12 的 mac 操作系统 我怀疑M1芯片可能是原因 我收到一个错误metadata generation failed 最小工作示例 directly in the t
  • Django - 提交具有同一字段多个输入的表单

    预警 我对 Django 以及一般的 Web 开发 非常陌生 我使用 Django 托管一个基于 Web 的 UI 该 UI 将从简短的调查中获取用户输入 通过我用 Python 开发的一些分析来提供输入 然后在 UI 中呈现这些分析的可视
  • 使用 NLP 进行地址分割

    我目前正在开发一个项目 该项目应识别地址的每个部分 例如来自 str Jack London 121 Corvallis ARAD ap 1603 973130 输出应如下所示 street name Jack London no 121
  • sqlite3从打印数据中删除括号

    我创建了一个脚本 用于查找数据库第一行中的最后一个值 import sqlite3 global SerialNum conn sqlite3 connect MyFirstDB db conn text factory str c con
  • 从列表python的单个列表中删除子列表

    我已经经历过从列表列表中删除子列表 https stackoverflow com questions 47209786 removing sublists from a list of lists 但当我为我的数据集扩展它时 它不适用于我
  • [cocos2d-x]当我尝试在 Windows 10 中运行“python android-build.py -p 19 cpp-tests”时出现错误

    当我尝试运行命令时python android build p cpp tests 我收到如图所示的错误 在此之前 我收到了另一条关于 Android SDK Tools 版本兼容性的错误消息 所以 我只是将 sdk 版本从 26 0 0
  • 如何使用Python保存“完整的网页”而不仅仅是基本的html

    我正在使用以下代码来使用 Python 保存网页 import urllib import sys from bs4 import BeautifulSoup url http www vodafone de privat tarife r
  • 使用Multiprocessing和Pool时如何访问全局变量?

    我试图避免将变量冗余地传递到dataList e g 1 globalDict 2 globalDict 3 globalDict 并在全球范围内使用它们 global globalDict然而 在下面的代码中并不是这样做的解决方案 是否有

随机推荐

  • SSRS 2008:如何在新页面上重复表格标题的一行

    我有一个包含 3 行标题的表格 我需要在新页面上重复第二行 除了第一页之外 页面中不需要第一行和第三行 如果我仅在第二行中设置属性 RepeatOnNewPage SSRS 将显示错误 TablixMember 必须具有与动态 Tablix
  • css动画持久结束状态

    我有一个 div 元素 它充当我的网页的全局容器 我在其中也有一个 div 元素 我将其用作窗帘 即当它被激活时 它会在黑暗的半透明层中覆盖整个页面 就像灯箱一样 因此该页面基本上已停用 并且可以在顶部显示警告对话框或图片框等 我可以使用j
  • 将特定的MDC字段附加到logstash日志中

    我正在尝试将自定义字段添加到 logback spring xml 中的 Logstash Appender 中 如下所示
  • Mongoose 填充包含 ref 的对象数组

    我有一个带有数组的猫鼬模式lists由对另一个集合的引用和嵌套的数字数组组成的对象 var Schema exports mongoose schema mongoose require mongoose Schema mongoose S
  • 构造函数注入——我们也注入工厂吗?

    听完后整洁代码讲座 https www youtube com playlist list PL693EFD059797C21E 我开始明白我们应该使用工厂来组合对象 因此 举例来说 如果House has a Door and a Doo
  • Camel 中的无限循环 - Rabbitmq

    我有一个小型服务器路由 它从queue in 获取消息并放入queue out 当我输入一条消息时queue in 服务器无限循环运行 我想知道我在配置方面缺少什么 这看起来是一条非常简单的路线 小服务器路由
  • IntelliJ 找不到 Scanner 类 [重复]

    这个问题在这里已经有答案了 我正在使用 Intellij IDEA 这是我的代码 public static void main String args java util Scanner scanner new java util Sca
  • 如何在Python中使用多线程时获得更快的速度

    现在我正在研究如何尽快从网站获取数据 为了获得更快的速度 我正在考虑使用多线程 这是我用来测试多线程和简单帖子之间差异的代码 import threading import time import urllib import urllib2
  • 如何在 Firefox 3.0 的 Javascript 中调用 Web 服务

    我在使用 Firefox 调用 Net Web 服务时遇到问题 客户 一个简单的例子对我来说就足够了 服务器端代码是这样的 WebService Namespace http tempuri org WebServiceBinding Co
  • 下一个可用记录 ID

    user User new user id返回零 但我需要在保存之前知道它 是否可以 是的你可以 我有同样的问题并调查了文档 能否解决这个问题其实和你的数据库类型有很大关系 Oracle and PostgreSQL确实有有用的功能可以轻松
  • RSA-OAEP SHA-512 加密/解密从 Javascriptwebcrypt api 到 PHP openssl?

    我一直忙于尝试使用 webcrypto api 和使用 openssl 的 PHP 服务器在浏览器客户端之间建立安全交换 我已经尽可能地分解了 事情 我编写了一些 javascript 来生成密钥对 打印出私有值和公共值 加密一个简单的字符
  • 过滤所有查询(试图实现软删除)

    我正在尝试在 EF Core 2 0 中实现软删除行为 public interface ISoftDeleteModel bool IsDeleted get set 创建正确的列和软删除工作正常 但从 DbContext 过滤实体则不然
  • 为什么从 iPhone 模拟器发送文件到 watchOS2 模拟器不起作用?

    我试图将数据库从 iOS 9 iPhone 复制到 watchOS 2 Apple Watch 两个模拟器 但什么也没有 找不到文件 到处搜查 我想在从 iPhone 输入应用程序到 Apple Watch 时传输数据库 即使仅 iPhon
  • 如何设置目录分隔符以匹配操作系统?

    我正在编写一个 qt 应用程序 目标是可移植到 3 个主要操作系统 我正在使用 QFileDialog 选择一个文件夹 然后将其添加到 QListWidget 中 然而 即使我在 Windows 上 文件夹名称也会返回为 E media 我
  • Java Toolkit 屏幕分辨率降低

    我正在使用 java 来获取屏幕的尺寸和分辨率 当我运行以下代码时 我得到以下输出 Toolkit toolkit Toolkit getDefaultToolkit Dimension dim toolkit getScreenSize
  • 在 ubuntu 上的 R 中使用 cairo 设备时出错

    我正在开罗设备上工作 我正在生成 cairo pdf 并收到如下所示的错误消息 cairo pdf DATA Warning messages 1 In cairo pdf DATA unable to load shared object
  • 同时显示同一文档的多个视图

    如何说服 MFC 文档 视图体系结构让我同时显示同一文档的两个不同视图 例如 说我的CDocument子类代表某种描述的档案 我想要一个用户界面 其中该存档中的所有条目的名称都显示在CListView子类显示在左侧窗格中 而当前所选条目的详
  • Python:函数需要 1 个位置参数,但给出了 2 个位置参数,怎么办?

    我正在用 Tk 用 python 创建一个数独游戏 我收到关于按钮按键功能的错误 from random import randint from tkinter import class sudoku global root result
  • Visual Studio Code - 多个屏幕中同一项目的选项卡(编辑器)

    使用多个屏幕 我通常将多个类 文件 放置在不同的屏幕中 这在重构 检查测试和比较更改时对我有很大帮助 Visual Studio Code 不允许我将选项卡拖到窗口外并在 例如 另一个监视器中查看它 我检查了文档和插件 但我发现的唯一方法是
  • random.choice 被字典破坏

    The random choice输入应该是sequence https docs python org 3 glossary html term iterable 这会导致奇怪的行为dict 它不是序列类型 但可以像这样使用下标 gt g