在 Python 中按元组的第一个元素自然地对字母数字元组列表进行排序

2023-12-19

A 之前的 stackoverflow 问题 https://stackoverflow.com/questions/2669059/how-to-sort-alpha-numeric-set-in-python解释如何按字母数字对字符串列表进行排序。我想按元组的第一个元素按字母数字顺序对元组列表进行排序。

示例1:

>>> sort_naturally_tuple([('b', 0), ('0', 1), ('a', 2)])
[('0', 1), ('a', 2), ('b', 0)]

示例2:

>>> sort_naturally_tuple([('b10', 0), ('0', 1), ('b9', 2)])
[('0', 1), ('b9', 2), ('b10', 0)]

Update:为了强调字母数字因素,请查看示例 2。


使用另一个问题的第二个答案,概括为支持 item 上的任何方法作为获取密钥的基础:

import re
from operator import itemgetter

def sorted_nicely(l, key):
    """ Sort the given iterable in the way that humans expect."""
    convert = lambda text: int(text) if text.isdigit() else text
    alphanum_key = lambda item: [ convert(c) for c in re.split('([0-9]+)', key(item)) ]
    return sorted(l, key = alphanum_key)


print sorted_nicely([('b10', 0), ('0', 1), ('b9', 2)], itemgetter(0))

这与答案完全相同,除了一般使用任何可调用的作为对item的操作。如果您只想在字符串上执行此操作,则可以使用lambda item: item,如果你想在列表、元组、字典或集合上执行此操作,你可以使用operator.itemgetter(key_or_index_you_want),或者如果您想在类实例上执行此操作,您可以使用operator.attrgetter('attribute_name_you_want').

它给

[('0', 1), ('b9', 2), ('b10', 0)]

对于你的例子#2。

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

在 Python 中按元组的第一个元素自然地对字母数字元组列表进行排序 的相关文章

  • 如何在 Bash 中按自然顺序循环文件?

    我使用以下命令循环目录中的所有文件 for i in fas do some code done 不过 我按这个顺序得到它们 vvchr1 fas vvchr10 fas vvchr11 fas vvchr2 fas 代替 vvchr1 f
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 有没有办法检测正在运行的代码是否正在上下文管理器内执行?

    正如标题所述 有没有办法做到这样的事情 def call back if called inside context print running in context else print called outside context 这将
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip

随机推荐

  • SQL:给定行之前和之后的行数

    问题是我们要获取给定行 例如由主键标识 之前和之后的总行数 我尝试过在 T SQL MSSQL 2008 中执行以下操作 它给出了正确的结果 但我不知道这是否是最好的方法 WITH cte before AS SELECT ROW NUMB
  • 是否可以在 Spring 中以基于表单的身份验证发送更多数据?

    我对这个比较陌生Spring框架 http en wikipedia org wiki Spring Framework和春季安全 我使用了自定义身份验证方案 HTML
  • 将大型 3gp 文件转换为字节数组

    我正在尝试将大型 3gp 文件 gt 25mb 转换为字节数组 但它给出了内存不足异常 我能够将小于 25 mb 的 3gp 文件转换为字节数组 文件文件1 新文件 Environment getExternalStorageDirecto
  • 如何最大限度地提高 C# 中大数组上按元素运算的性能

    该操作是将数组的每个第 i 个元素 称为 A 与相同大小的矩阵 B 的第 i 个元素相乘 并用获得的值更新 A 的相同第 i 个元素 在算术公式中 A i A i B i 0 在多核环境中优化此操作的最佳方法是什么 这是我当前的代码 var
  • 提取 ARIMA 规范

    从 auto arima 打印拟合模型对象包括一行 例如 带有漂移的 ARIMA 2 1 0 这将是一个很好的项目 可以包含在说明拟合模型的 sweave 或其他 输出中 是否可以将该行提取为块 此时 我所做的最好的事情是从 arma 组件
  • 如何从asp.net中的url中删除页面名称?

    来自以下网址 http www mywebsite com default aspx 我想删除default aspx 这样网址将如下所示 http www mywebsite com 我需要一种快速而干净的方法来执行此操作 并且我只需要使
  • 在单独的构建过程中签入文件后,我可以绕过门控签入构建吗? 2010年TFS

    我为解决方案设置了 2 个构建定义 1 个是每晚触发的夜间构建 另一个是门控签入构建 当开发人员尝试将新更改签入源代码管理时将触发 每晚构建使用自定义模板 该模板使用稍微修改过的方法来增加程序集版本埃瓦尔德 霍夫曼法 http www ew
  • 一夜不活动后出现一般网络错误

    一段时间以来 我们的旗舰应用程序一直出现神秘错误 错误消息是通用的 DBNETLIB ConnectionWrite send 一般网络错误 检查您的网络文档 通过让应用程序在晚上打开并在早上恢复工作 可以可靠地重现这一点 由于它是后端服务
  • Rails 2.3 和 rspec-rails 兼容性

    什么版本的rspec railsgem 仍然与 Rails 2 3 分支兼容 特别是 2 3 14 我试过了2 1 0 但这也适用于 Rails gt 3 0 我应该注意的任何其他依赖项或版本限制吗 Thanks 版本 1 3 4 是 Ra
  • mysql + 导入列标题中有空格的文件 + 如何处理

    我有一个 csv 文件 我想将其导入到 mysql 中 我正在慢慢地做到这一点 我正在尝试使用加载数据文件 https stackoverflow com a 20895203 2392358但首先我必须创建表格 这就是我的问题所在 我尝试
  • Android:与 Android 设备进行 RS232 串行通信

    我有一个MR400s 出租车计价器 http www taxiworld co uk london taximeter rentals硬件 我想使用RS232电缆与这个出租车计价器进行通信 并且我已经在Windows中实现了这种连接和通信
  • 程序结束后出现分段错误

    我正在做一项家庭作业 而且我对 C 还比较陌生 我必须为整数数组创建一个初始值设定项 我的教授给我的声明是 typedef int set t Can t be altered void init set t thing int N Can
  • DNS-SD:使用“mdnsjava”的经验? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我现在正在实施 DNS DS 库 mdnsjava https code google com p mdnsjava 进入我的Andr
  • jquery创建二维数组

    编辑 看来我对我想要完成的事情有点困惑 对于那些花时间解释这一点的人 谢谢 我正在尝试在 Jquery Javascript 中创建一个二维数组 我已经进行了大量的搜索 测试和更多搜索 但我无法找到对我来说真正有意义的解决方案 这已经是漫长
  • python请求中的Http重定向代码3XX

    我正在尝试捕获重定向 url 的 http 状态代码 3XX 302 但我无法获取它 因为它给出了 200 状态代码 这是代码 import requests r requests get http goo gl NZek5 print r
  • IdentityServer4 如何在登录后重定向到上一个 url 页面而不在 IdP 注册所有路由

    按照建议 我会在 IdP 上注册授权回调 url redirect url 它可以工作 但是 如果使用 MVC 应用程序的客户端尝试访问未经授权的页面 将会被重定向到 idsrv 登录页面 该怎么办 redirect url 始终是配置的
  • 在 JUnit 测试中模拟按键

    我完全陷入了java测试 它是通过测试方法将字符 a 发送到 JFrame 组件的 JTextField JFrame 类实现 KeyListener 接口 因此覆盖 KeyPressed KeyTyped 和 KeyReleased 与此
  • 如何更改主机名解析,如 coredns 中的主机文件

    我有一个像这样的核心文件配置 53 errors health lameduck 5s ready kubernetes cluster local in addr arpa ip6 arpa pods insecure fallthrou
  • InputStream 不会关闭,或者需要很长时间才能关闭

    我正在尝试将外部 mp3 下载到内部存储中 但是 我尝试下载的文件很大 因此我尝试以 1MB 的块下载它们 以便您可以在下载其余文件的同时开始播放它们 这是我的流代码 InputStream is null OutputStream os
  • 在 Python 中按元组的第一个元素自然地对字母数字元组列表进行排序

    A 之前的 stackoverflow 问题 https stackoverflow com questions 2669059 how to sort alpha numeric set in python解释如何按字母数字对字符串列表进