如何按值对计数器进行排序? - Python

2024-02-04

除了进行反向列表理解的列表理解之外,是否有一种Pythonic方法可以按值对Counter进行排序?如果是这样,它比这个更快:

>>> from collections import Counter
>>> x = Counter({'a':5, 'b':3, 'c':7})
>>> sorted(x)
['a', 'b', 'c']
>>> sorted(x.items())
[('a', 5), ('b', 3), ('c', 7)]
>>> [(l,k) for k,l in sorted([(j,i) for i,j in x.items()])]
[('b', 3), ('a', 5), ('c', 7)]
>>> [(l,k) for k,l in sorted([(j,i) for i,j in x.items()], reverse=True)]
[('c', 7), ('a', 5), ('b', 3)

Use the Counter.most_common() method http://docs.python.org/library/collections.html#collections.Counter.most_common,它会对项目进行排序for you:

>>> from collections import Counter
>>> x = Counter({'a':5, 'b':3, 'c':7})
>>> x.most_common()
[('c', 7), ('a', 5), ('b', 3)]

它将以尽可能最有效的方式做到这一点;如果您要求前 N 个值而不是所有值,则heapq使用而不是直接排序:

>>> x.most_common(1)
[('c', 7)]

在柜台之外,排序始终可以根据key功能;.sort() and sorted()两者都可以调用,让您指定一个值来对输入序列进行排序;sorted(x, key=x.get, reverse=True)会给你相同的排序x.most_common(),但只返回键,例如:

>>> sorted(x, key=x.get, reverse=True)
['c', 'a', 'b']

或者您可以仅对给定的值进行排序(key, value) pairs:

>>> sorted(x.items(), key=lambda pair: pair[1], reverse=True)
[('c', 7), ('a', 5), ('b', 3)]

See the Python 排序指南 http://docs.python.org/howto/sorting.html了解更多信息。

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

如何按值对计数器进行排序? - Python 的相关文章

随机推荐

  • Apache POI Excel 工作簿创建需要很长时间

    我注意到使用 Apache POI v3 10 例如 xlsx 文件的工作簿创建语句 Workbook wb WorkbookFactory create inputStream or Workbook wb new XSSFWorkboo
  • 命名空间别名的范围是什么?

    在函数定义内定义的 C 命名空间别名是否具有块 函数 文件或其他作用域 有效期 这是区块的有效期 例如 如果您按如下方式定义命名空间别名 则命名空间别名 abc 在外部无效 block namespace abc xyz abc test
  • 使用 PHP 代码的 WordPress Woocommerce 建议

    我正在使用 woo commerece 插件 我想在每个产品的标题下有一个子标题 样式和格式已排序 但我希望在子标题部分中显示特定的类别 我已经设法显示所有类别 但我想将其范围缩小到父类别下的一个类别 下面是我正在使用的代码 任何人都可以建
  • C 中循环中的 if 语句被跳过

    在函数验证中 我有一个名为 size 的循环 它与 foodSelect 中的第三个循环相同 只是由于某种原因它的工作方式不同 它不会先提示我输入 而是直接进入其中的 if 并询问What size L Large M Medium S S
  • 没有 class_name 的 FactoryBot 命名空间模型

    我有这样命名的模型 class Vehicle lt ActiveRecord Base end class Vehicle Car lt Vehicle end class Vehicle Train lt Vehicle end cla
  • 将 List 拆分为连续数字组[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有一个排序的List
  • 使用 aws-cli 将 URL 保存到 AWS 参数存储

    好吧 所以我尝试以编程方式将无服务器生成的 API 端点存储在参数存储中 以供另一个项目摄取 举个例子 我将尝试存储 google com aws ssm put parameter name dev someStore value htt
  • 与 CollectionViewSource 绑定

    我正在尝试使用 CollectionViewSource 实现一些组合框排序 该组合框实际上是数据模板的一部分 并在列表视图中重复出现 我的第一种方法似乎有效 使用 CollectionViewSource 但我的所有组合框共享相同的数据上
  • 如何在 Greasemonkey 中替换链接的目标?

    我正在尝试在 Greasemonkey 中编写一个脚本 将链接的目标替换为其他内容 但由于我有限的 Javascript 知识 我真的不知道如何做到这一点 基本上我试图找到包含特定字符串的所有链接 例如 a contains href xx
  • 如何在 Struts 2 的 OGNL 表达式语言中包含 HTML

    我正在研究 struts 2 我正在做一个projection我的 JSP 页面中使用 OGNL 表达式语言的集合 我有 1 个基于列表的集合action类 我在 JSP 页面上访问该类 如下所示
  • 如何使用凭证配置文件通过 AWS CLI 登录

    我想设置多个 AWS 配置文件 以便在项目之间跳转时可以轻松更改设置和凭证 我已阅读 AWS 文档 但关于如何选择登录时要使用的配置文件非常模糊 当我尝试登录时 它只是给我这个错误 这似乎表明它没有获取任何凭据 An error occur
  • 模块联合无法在 webpack.config.js 中动态挂接远程

    当我在 index html 中预先加载遥控器时 我已经进行了模块联合设置并且工作正常 下面的作品 index html div div host webpack name home library type var name home f
  • pybind11、cmake:如何安装文件?

    我正在将 C 库与越来越流行的接口连接起来pybind11 https github com pybind pybind11获取本机 Python 绑定 配置是通过CMake My CMakeLists txt好像 cmake minimu
  • Docker 构建时出现“组织已启用或强制执行 SAML SSO。要访问远程:此存储库”错误

    FROM golang 1 17 alpine as builder ENV GOPRIVATE github com XXXXX ARG GITHUB TOKEN GITHUB TOKEN RUN apk update apk add g
  • HTML/CSS 显示/隐藏多个元素?

    我正在寻找一个 HTML CSS 解决方案来应对这一挑战 我有多个具有相同类或相同 id 的元素 并且我想使用按钮或切换开关同时显示 隐藏它们 然后我有一个单击事件 当我单击代表所有这些元素的类或 ID 时 它们都会隐藏 当我再次单击时 它
  • Laravel 存储文件的公共 url

    我想检索使用存储的所有文件的公共网址 存储 putFile 公共 备件 所以 这是我正在使用的问题 存储 文件 公共 备件 但它提供了 laravel 存储目录的输出 public spares image1 jpg public spar
  • 应用程序退出后未设置剪贴板?

    以这个例子为例如何使用 Python 将字符串复制到 Windows 上的剪贴板 https stackoverflow com questions 579687 how do i copy a string to the clipboar
  • 我可以使用 Linux/Mono 部署 aspnet web 应用程序吗?

    我有一个 C ASP NET 应用程序 可以在带有 IIS 的 Windows 上运行 但最近我很想切换到 Linux Mono 它提出了一些问题 我可以在 Mono 中正确运行我的 Visual Studio 项目和源代码吗 我的客户使用
  • 无法运行growl通知并且gemgrowl_notify抛出错误

    当我运行 guard 时 我无法收到咆哮通知 我需要growl notify 的任何特定版本吗 咆哮版本 1 2 这是我的宝石文件 gem rails 3 1 3 gem sqlite3 group development test do
  • 如何按值对计数器进行排序? - Python

    除了进行反向列表理解的列表理解之外 是否有一种Pythonic方法可以按值对Counter进行排序 如果是这样 它比这个更快 gt gt gt from collections import Counter gt gt gt x Count