如何获取按输入顺序排序的 python Counter 输出?

2024-03-27

我一直在努力获取计数(频率),然后制作它的图形表示。

我在用Counter班级来自collections使用Python。我想要的输出Counter按照先到对象的顺序。

例如:

offset=['a','b','c','a','b','b','b','c','c','c','c','c']
counts = Counter(offset)
print counts

输出是:

Counter({'c': 6, 'b': 4, 'a': 2})

因为我希望输出如下,按照先到对象的顺序:

Counter({'a': 2, 'b': 4, 'c': 6})

那可能吗?

Thanks


OrderedCounter by(2行长)多重继承

接下来精彩的演讲超级算超级 https://www.youtube.com/watch?v=EiOglTERPEo经过 Raymond Hettinger 我们可以使用多重继承:

from collections import OrderedDict, Counter

class OrderedCounter(Counter, OrderedDict):
    pass

并使用它:

>>> counter = OrderedCounter("abracadabra")
>>> for key, value in counter.items():
...    print key, value
a 5
b 2
r 2
c 1
d 1

这就是您完成任务所需的全部内容。

修复稍微令人困惑的表示

让我们做更多测试,看看我们得到什么“结果”:

>>> counter = OrderedCounter("cbaaa")
>>> counter
OrderedCounter({'a': 3, 'c': 1, 'b': 1})

哦 - 这看起来不对,预期的顺序是“c”,“b”,“a”。让我们测试它打印键和值:

>>> for key, value in counter.items():
...    print key, value
c 1
b 1
a 3

这看起来是正确的(并且这正是在代码中使用的真正重要的)。

事实证明,我们创建的类只是产生了一些令人困惑的表示。

这可以修复:

class OrderedCounter(Counter, OrderedDict):
    def __repr__(self):
        return "%s(%r)" % (self.__class__.__name__, OrderedDict(self))

使用时:

>>> counter = OrderedCounter("cbaaa")
>>> counter
OrderedCounter({'c': 1, 'b': 1, 'a': 1})

Raymond Hettinger 演讲的完整版本(添加了酸洗)

演讲中提供的完整版增加了一种方法__reduce__允许酸洗 正确地定位对象。

from collections import OrderedDict, Counter

class OrderedCounter(Counter, OrderedDict):
    """Counter that remembers the order elements are first seen"""
    def __repr__(self):
        return "%s(%r)" % (self.__class__.__name__, OrderedDict(self))

    def __reduce__(self):
        return self.__class__, (OrderedDict(self),)

无论如何,在大多数情况下,您将使用最简单的版本进行管理OrderedCounter class.

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

如何获取按输入顺序排序的 python Counter 输出? 的相关文章

  • 查找其他列表项中列表项的列表索引

    我有一个长字符串列表 我想获取与另一个列表中的字符串子字符串匹配的列表元素的索引 使用列表理解可以轻松检查列表项是否包含列表中的单个字符串 例如这个问题 https stackoverflow com questions 4843158 c
  • 从以元组为键的字典中获取 pandas 数据框

    我是Python新手 并且已经在这个问题上挣扎了一段时间 我有一个这样的字典 dict1 a a 5 a b 10 a c 11 b a 4 b b 8 b c 3 我想做的是将其转换为 pandas 数据框 如下所示 a b c a 5
  • 如何将 pymongo.cursor.Cursor 转换为字典?

    我正在使用 pymongo 查询一个区域内的所有项目 实际上是查询地图上一个区域内的所有场馆 我用了db command SON 在搜索球形区域之前 它可以返回一本字典 字典中有一个名为results其中包含场馆 现在我需要在一个正方形区域
  • 计算5个城市之间的地理距离以及每个城市所有可能的组合

    所以我有一个 csv 文件 其中包含 3 列 城市 纬度 经度 我已经使用此代码从这个 csv 文件在 python 中创建了一个数据框 data pd read csv lat long csv nrows 10 Lat data lat
  • 使用 QtDesigner 的 pyQt 信号/槽

    我正在尝试编写一个与 QGraphicsView 交互的程序 我想在 QGraphicsView 中发生事件时收集鼠标和键盘事件 例如 如果用户单击 QGraphicsView 小部件 我将获得鼠标位置 类似的东西 我可以很容易地对其进行硬
  • Pytorch CUDA 错误:没有内核映像可用于在带有 cuda 11.1 的 RTX 3090 设备上执行

    如果我运行以下命令 import torch import sys print A sys version print B torch version print C torch cuda is available print D torc
  • 我应该如何在 Python 中将 HTTPHandler 与 RotatingFileHandler 链接起来?

    我需要创建一个系统 将嵌入式系统中生成的日志消息远程记录在服务器上并存储在轮换日志文件中 由于网络通信的限制 日志消息必须通过HTTP协议传输 服务器已经运行了Flask http flask pocoo org 基于 HTTP 服务器 因
  • 读取Excel文件时的Pandas数据框和字符编码

    我正在阅读一个包含多个数值和分类数据的 Excel 文件 name string 列包含外语字符 当我尝试查看 name string 列的内容时 我得到了我想要的结果 但外来字符 在 Excel 电子表格中正确显示 以错误的编码显示 这是
  • 如何加载 caffe 模型并转换为 numpy 数组?

    我有一个 caffemodel 文件 其中包含 ethereon 的 caffe tensorflow 转换实用程序不支持的层 我想生成我的咖啡模型的 numpy 表示 我的问题是 如何将 caffemodel 文件 我还有 prototx
  • pip 安装与本地包具有相同命名空间的包

    我使用的是 Python 3 6 5 通过 miniconda 安装 我的问题是由于我正在安装一个与本地包具有相同命名空间的包 pip 安装此包后 我无法再从本地包导入 我收到一个ModuleNotFoundError错误 如果可能的话 命
  • python中根据变量类型处理数据子集

    我将以下数据存储在 csv df sample csv 中 我将列名放在名为 cols list 的列表中 df 数据 样本 df data sample pd DataFrame new video BASE SHIVER PREFER
  • 将数据导入 Django 的好方法

    我想定期将数据导入 Django 项目 我需要告诉我的数据提供者我想要以什么格式接收数据 我应该以 Json XML CSV 格式请求吗 在 Django 中通常如何处理这个问题 Django 有一个用于导入数据的完整框架 称为 Fixtu
  • 如何使用python将下载的音频文件扩展名重命名为mp3

    目前 我正在尝试根据艺术家姓名和歌曲标题将 YouTube 音乐视频下载为音频文件 下载所有视频后 我尝试将所有音频文件从 webm 或 mp4 扩展名重命名为 mp3 但似乎我在将文件名和扩展名更改为 mp3 时遇到了一些错误 我的代码基
  • 如何创建一个包含多个文件且没有子包的Python包

    我正在尝试创建一个包含一些类的包 mypackage 但希望这些类包含在多个文件中 例如 我希望 class a py 包含一个名为 ClassA 的类 等等 因此 我想要以下文件结构 mypackage init py class a p
  • 如何从另一个 Python 文件将 Uvicorn FastAPI 服务器作为模块运行?

    我想使用 Uvicorn 从不同的 Python 文件运行 FastAPI 服务器 uvicorn模块 main py import uvicorn import webbrowser from fastapi import FastAPI
  • 如何在 Robot Framework 中将变量定义为具有列表值的字典

    在我的一个测试用例中 我需要定义一个字典 其中键是字符串 值是字符串数组 我怎样才能在机器人框架中做到这一点 我第一次尝试使用如下所示的构造 但行不通 Variables Dictionary A StringA1 StringA2 B S
  • 错误:线条魔术函数

    我正在尝试使用 python 读取文件 但不断收到此错误 ERROR Line magic function user vars not found 我的代码非常基本 names read csv Combined data csv nam
  • Python 中字典的 enumerate()

    我知道我们用enumerate用于迭代列表 但我在字典上尝试过 但没有给出错误 CODE enumm 0 1 1 2 2 3 4 4 5 5 6 6 7 7 for i key in enumerate enumm print i key
  • App Engine、PIL 和叠加文本

    我正在尝试在 GAE 上的图像上覆盖一些文本 现在他们公开了 PIL 库 这应该不是问题 这就是我所拥有的 它有效 但我不禁认为我应该直接写入背景图像 而不是创建单独的覆盖图像然后合并 我可以用吗Image frombuffer http
  • 为什么这个多处理代码会失败? [复制]

    这个问题在这里已经有答案了 def sample pass Process target sample start Process target sample start 上面的代码失败并出现错误 已尝试在当前进程之前启动新进程 进程已完成

随机推荐

  • Pandas 对具有固定行数的数据帧进行重新采样

    With pandas DataFrame resample https pandas pydata org pandas docs stable generated pandas DataFrame resample html我可以将 D
  • 如何使用javascript从字符串中获取锚标记的href值

    如何使用纯javascript而不使用Jquery获取下面字符串内容中最后一个锚标记的href值 var contents div a href http www okhype com wp content uploads 2016 12
  • 使用<尖括号>批量写入文本文件

    我正在尝试使用批处理脚本动态创建一个小型 XML 文件 但在编写以尖括号开头和结尾的行时遇到问题 1 如果我做类似的事情 set foo
  • Android Studio 无法解析 Espresso 3.0.0

    根据Android Espresso 文档 https developer android com training testing espresso setup html迄今为止 添加 Espresso 依赖项 要将 Espresso 依
  • 声纳扫描仪引擎未启动

    我按照以下说明进行操作使用 SonarQube Scanner for Ant 进行分析 https docs sonarqube org display SCAN Analyzing with SonarQube Scanner for
  • Zend_Forms、控制器放在哪里?模型?别的地方?

    构建 Zend Forms 的代码最好放在哪里 我曾经把这个逻辑放在我的控制器中 但在我需要在不同的地方使用相同的表单后 我就放弃了这个逻辑 这意味着我必须在不同的控制器中重复创建表单 因此 我将表单创建代码移至我的模型中 这看起来正确吗
  • Swift:来自浮点的字符串而不舍入值

    建议对小数进行四舍五入 但我面临着一种情况 我只需要降低精度 输出 15 96 至 16 0 所需输出 15 96 至 15 9 Codes var value AnyObject dict valueForKey XXX var stri
  • GCC 使用 __stdcall 编译 dll

    当我们在 Visual Studio 2008 中使用 stdcall 编译 DLL 时 DLL 中的编译函数名称为 函数名 尽管当我们使用 wx dev cpp 使用 GCC 编译相同的 dll 时 GCC 会附加该函数具有的参数数量 因
  • 即时刷新 Google 可视化

    我目前正在通过谷歌可视化创建谷歌图表 我希望能够通过单击按钮刷新 更新此图表 我尝试了很多不同的方法来做到这一点 但没有一个有效 所以我正在寻找任何人都可以提出的建议 我当前的平台是 ASP net 使用 C 而 google 的东西是用
  • 为什么在 JS 类中声明的变量是“undefined”[重复]

    这个问题在这里已经有答案了 尝试在 JS 中创建一个具有权重属性的类 代码如下 function Foo var weight 10 console log weight 当我实例化它时var bar new Foo 10已记录到控制台 当
  • Django DateTimeField 从表单到 UTC

    我有一个带有表单的小型 Django 应用程序 它将一些数据保存到数据库中 表格如下 class SomeForm forms Form time forms DateTimeField 还有我保存它的视图 class AccountAdd
  • 无法写入 HKEY_LOCAL_MACHINE\Software 下的注册表

    我正在编写一个应用程序 需要创建一个隐藏在登录屏幕和控制面板用户小程序中的特殊用户帐户 通过写一个DWORD将用户名值设置为 0 并添加到下面的注册表项中 我就能够实现此目标 HKEY LOCAL MACHINE SOFTWARE Micr
  • Angular5 valuechanges() 函数发生了什么? (角火2)

    我尝试理解 valueChanges 和 subscribe 我用AngularFire2 and Angular5 我的代码可以工作 但我不明白它是如何工作的 我的组件 ngOnInit this itemService getLastU
  • 蝙蝠。使用 Firefox 打开多个 url 窗口的文件

    如何编写在Firefox的新窗口中打开多个URL的bat文件 在 chrome new window 命令中有效 但在 Firefox 中该命令是什么 尝试一下这个示例 echo off Set URL www google com www
  • 从另一个进程的输出流读取

    我想在我的 Java 程序中读取 c 应用程序的输出流 iremoted 可在此处获取 Link https web archive org web 20200505051207 http www osxbook com software
  • 正则表达式,单引号或双引号

    我有这个正则表达式 preg replace key is key newValue contents 它将数组值写入配置文件中 我需要在数组键周围允许使用单引号或双引号 但我不知道该怎么做 我没有写这个正则表达式 处理多种引用样式的常用方
  • 如何只关注 Github 上的特定问题,而不是观看整个项目? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 是否可以只关注 Github 上的特定问题 而不是观看整个项目 当一个特定问题发生更改 拉取 状态更改 新评论 时 我希望通过电子邮件收到通知 这有可
  • 使用 rvm 更新 ruby​​ 版本后收到警告消息“Path set to RVM”

    最近 由于出现警告消息 我尝试更新我的 ruby 版本 见下文 现在 当我启动 iterm2 时 我收到以下警告消息 Warning PATH set to RVM ruby but GEM HOME and or GEM PATH not
  • 如何在新算法中添加weka特征?

    我想在 weka 中添加一种新算法 在一个算法中具有分类 聚类 关联等功能 我应该如何编写代码来包含所有 weka 功能 并为这个新算法向 weka 添加一个选项卡 我已经向 weka 添加了一个虚拟算法 现在它可以工作了我想添加一个结合了
  • 如何获取按输入顺序排序的 python Counter 输出?

    我一直在努力获取计数 频率 然后制作它的图形表示 我在用Counter班级来自collections使用Python 我想要的输出Counter按照先到对象的顺序 例如 offset a b c a b b b c c c c c coun