按后缀组合列表元素

2024-04-17

给定两个带后缀的列表:

l1 = ['C_1', 'B_1', 'A']
l2 = ['B_2', 'C_2', 'D']

我想像这样组合它们:

['C_1', 'C_2', 'B_1', 'B_2', 'A', 'D']

元素将与l1作为锚。这意味着,如果C_*出现在之前B_* in l1,相同的顺序将保留在输出中。此外,具有相同前缀的元素C_*将按后缀升序分组在一起。带有后缀的元素按照它们出现的顺序放置,如上所示。

您可以假设中的所有元素l1有后缀_1,以及中的所有元素l2有后缀_2.

我试过这个:

from collections import OrderedDict
from itertools import chain

o = OrderedDict()
for x in l1 + l2:
    o.setdefault(x.split('_')[0], []).append(x) 

result = list(chain.from_iterable(o.values()))

哪个有效,但想知道是否有更简洁的方法可以做到这一点。

Edit:

后缀只是代表该元素出现在哪个列表中。假设我有C_1 from l1, and C_2 from l2, then C_*元素出现的基础是l1哪个是在l2,在最终列表中(所以,它是... C_1, C_2...).

此外,所有元素在l1 and l2彼此和他们自己都是独一无二的。希望有帮助。


亚历克斯回答 https://stackoverflow.com/questions/46838487/combine-list-elements-by-suffix/46839182#46839182很短,但使用list.index其中有O(n)复杂。

我建议对建筑进行一些小的调整p作为字典,反转迭代以模拟如何index有效(否则当出现超过 1 次时返回最后一个索引)。

在这种情况下,排序键函数使用字典查找代替,速度更快:

l1 = ['C_1', 'B_1', 'A']
l2 = ['B_2', 'C_2', 'D']

p = {s[0]:i for i,s in reversed(list(enumerate(l1 + l2)))}
print(sorted(l1 + l2, key=lambda x: (p[x[0]], x)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按后缀组合列表元素 的相关文章

  • Google App Engine queue.yaml 无法在开发服务器中工作

    我无法让 dev appserver py 识别我使用queue yaml 创建的自定义队列 他们没有出现在http localhost 8000 taskqueue http localhost 8000 taskqueue 当我尝试向其
  • Python 3 os.urandom

    在哪里可以找到完整的教程或文档os urandom 我需要获得一个随机 int 来从 80 个字符的字符串中选择一个字符 如果你只需要一个随机整数 你可以使用random randint a b 来自随机模块 http docs pytho
  • 为什么删除临时文件时出现WindowsError?

    我创建了一个临时文件 向创建的文件添加了一些数据 已保存 然后尝试将其删除 但我越来越WindowsError 编辑后我已关闭该文件 如何检查哪个其他进程正在访问该文件 C Documents and Settings Administra
  • Pandas:GroupBy 到 DataFrame

    参考这个关于 groupby 到 dataframe 的非常流行的问题 https stackoverflow com questions 10373660 converting a pandas groupby object to dat
  • 删除 Django 1.7 中的应用程序(和关联的数据库表)

    是否可以使用 Django 1 7 迁移来完全删除 卸载应用程序及其所有跟踪 主要是其所有数据库表 如果没有 在 Django 1 7 中执行此操作的适当方法是什么 python manage py migrate
  • Python 中的流式传输管道

    我正在尝试使用 Python 将 vmstat 的输出转换为 CSV 文件 因此我使用类似的方法转换为 CSV 并将日期和时间添加为列 vmstat 5 python myscript py gt gt vmstat log 我遇到的问题是
  • 如果未引发异常,则通过 Python 单元测试

    在Python中unittest框架 是否有一种方法可以在未引发异常的情况下通过单元测试 否则会因 AssertRaise 而失败 如果我正确理解你的问题 你could做这样的事情 def test does not raise on va
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • Keras:如何保存模型或权重?

    如果这个问题看起来很简单 我很抱歉 但是阅读 Keras 保存和恢复帮助页面 https www tensorflow org beta tutorials keras save and restore models https www t
  • 在 Django OAuth Toolkit 中安全创建新应用程序

    如何将 IsAdminUser 权限添加到 Django OAuth Toolkit 中的 o applications 视图 REST FRAMEWORK DEFAULT PERMISSION CLASSES rest framework
  • 一段时间后终止线程的最 Pythonic 方法

    我想在线程中运行一个进程 它正在迭代一个大型数据库表 当线程运行时 我只想让程序等待 如果该线程花费的时间超过 30 秒 我想终止该线程并执行其他操作 通过终止线程 我的意思是我希望它停止活动并优雅地释放资源 我认为最好的方法是通过Thre
  • 从扫描文档中提取行表 opencv python

    我想从扫描的表中提取信息并将其存储为 csv 现在我的表提取算法执行以下步骤 应用倾斜校正 应用高斯滤波器进行去噪 使用 Otsu 阈值进行二值化 进行形态学开局 Canny 边缘检测 进行霍夫变换以获得表格行 去除重复行 10像素范围内相
  • .pyx 文件出现未知文件类型错误

    我正在尝试构建一个包含 pyx 文件的 Python 包 pyregion 但在构建过程中出现错误 检查以下输出 python setup py build running build running build py creating b
  • Matplotlib 中 x 轴标签的频率和旋转

    我在下面编写了一个简单的脚本来使用 matplotlib 生成图形 我想将 x tick 频率从每月增加到每周并轮换标签 我不知道从哪里开始 x 轴频率 我的旋转线产生错误 TypeError set xticks got an unexp
  • 返回表示每组内最大值的索引的一系列数字位置

    考虑一下这个系列 np random seed 3 1415 s pd Series np random rand 100 pd MultiIndex from product list ABDCE list abcde One Two T
  • Anaconda 无法导入 ssl 但 Python 可以

    Anaconda 3 Jupyter笔记本无法导入ssl 但使用Atom终端导入ssl没有问题 我尝试在 Jupyter 笔记本中导入 ssl 但出现以下错误 C ProgramData Anaconda3 lib ssl py in
  • SocketIO + Flask 检测断开连接

    我在这里有一个不同的问题 但意识到它可以简化为 如何检测客户端何时从页面断开连接 关闭其页面或单击链接 换句话说 套接字连接关闭 我想制作一个带有更新用户列表的聊天应用程序 并且我在 Python 上使用 Flask 当用户连接时 浏览器发
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • 如何根据第一列创建新列,同时考虑Python Pandas中字母和列表的大小? [复制]

    这个问题在这里已经有答案了 我在 Python Pandas 中有 DataFrame 如下所示 col1 John Simon prd agc Ann White BeN and Ann bad list Ben Wayne 我需要这样做
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk

随机推荐

  • HSQLDB服务器模式用户名/密码

    如果我使用 Java 代码在服务器模式下启动 HSQLDB 则服务器启动不会出现任何问题 但是 当我尝试通过 Java 代码或通过 HSQLDB DatabaseManagerSwing 连接到相同的数据库时 我无法连接 我在仅内存模式下使
  • 通过API服务端点消费来自Kafka主题的消息

    目前 我有一个 API 服务端点 用 netcore6 C 编写 它将接受消息对象并将其保存到数据库 然后将该消息发布到 kafka topic 2 如何利用我的 API 服务端点始终监听 观看并连接到 kafka topic 1 一旦新消
  • 为什么`从. importviews`可以解决Flask中的循环导入吗? [复制]

    这个问题在这里已经有答案了 我从中学习更大的应用 http flask pocoo org docs 0 10 patterns packages 在这个文档中 它说 所有视图函数 顶部带有route 装饰器的函数 都必须导入到init p
  • NAudio - 更改缓冲麦克风音频的音高并发送到虚拟音频线

    我决定尝试使用 NAudio 和虚拟音频线创建一个与 Discord 或类似软件 一起使用的音板 我能够将音频从麦克风 注入 到音频电缆 这样我就可以通过选择虚拟音频电缆作为 Discord 中的输入设备来播放声音文件和麦克风音频到 Dis
  • 在类中初始化 static struct tm

    我想使用 tm 结构作为类中的静态变量 花了一整天的时间阅读和尝试 但它仍然无法工作 如果有人能指出我做错了什么 我将不胜感激 在我的课堂上 在公共下 我将其声明为 static struct tm dataTime 在main cpp中
  • ObservableCollection CollectionChanged 事件

    我有一个可观察的集合 并且在其上连接了一个 collectionChanged 事件 我将其项目绑定到用户界面中的列表框 当用户从列表框中删除 UI 中的某些项目时 CollectioChanged 会正确触发 但是 我需要知道已删除项目的
  • Android:使用 Admob 的 Consent SDK 获取用户位置

    我对 AdMob 的新功能有疑问 同意 SDK https developers google com admob android eu consent consent sdk the 整合指南 https developers googl
  • 相机框架相对于基准点的世界坐标

    我正在尝试确定世界坐标中的相机位置 相对于基于场景中找到的基准标记的基准位置 我确定 viewMatrix 的方法如下所述 确定相机姿势 https stackoverflow com questions 28335954 determin
  • 如何配置 Magento Enterprise 使用 Solr 作为主要搜索引擎?

    我尝试寻找文档 但它非常稀疏 我编写了以下指南 希望它可以帮助人们节省 2 3 个小时的安装 设置和配置时间 与 MySQL 全文搜索标准设置相比 使用 Solr 带来的性能提升非常惊人 在您的 Magento 安装中让它工作绝对值得花时间
  • 如何使用终端/cmd编译java项目

    我厌倦了使用 Eclipse 因为它太 简单 和 老式 所以我转向了一个名为 Sublime Text 3 的程序 并使用了一个名为 material theme 的包 这使得该程序看起来平坦且一切都很好 但我想用它来编写 Java 代码
  • 当我降级到 1.7 后执行 java -version 时,我仍然看到 Java 1.8

    我从 1 8 降级了 java 1 7 但降级时仍然看到 1 8java version 我改变了path并且还做了JAVA HOME1 7 更改为 JAVA HOME C Program Files x86 Java jdk1 7 0 7
  • 在 Sproutcore 2 中编写自定义控件

    我对 Sproutcore 相当陌生 但对 Handlebars 很熟悉 我已经浏览了 Todo 教程并查看了其他一些示例 我喜欢它的一切 并且想在 Backbone 上使用它 但我很难理解如何连接自定义控件 我可以看到一些数据将在绑定中发
  • 使用 BeanUtils 检索字段值

    我想提取未由某些自定义注释标记的私有字段值 这可以通过 BeanUtils 实现吗 如果是 怎么办 是的 假设您知道字段名称 您可以使用PropertyUtils getSimpleProperty http commons apache
  • “git stash”是否在内部“提交”到我的本地存储库?

    我以前只手动commit之前到我的本地仓库pushing 到远程仓库 但更多时候我pull获取我的编码伙伴的更改 有时我们都处理同一个文件并且存在冲突 在这些情况下 他告诉我要做一个git stash在我之前git pull然后一个git
  • 如何在没有 root 权限的情况下安装 python 3.x 和 2.y

    我正在一台没有root权限的共享机器上工作 但安装了Python 2 y 但我想要两种风格的Python 而且我想调用Python 2 y 只需键入 python 像往常一样 并为调用 Python 3 x 输入 python3 我知道这是
  • 如何使mat-select始终在angular2中的表单字段下打开?

    我需要角度材料垫选择组件在其表单字段的正下方打开 但它会打开所选选项位置上的下拉菜单 并且容器会根据所选选项稍微移动到顶部 有没有办法打开表单字段正下方的下拉容器 该行为是由 Material Design 规定的 您可以使用以下命令关闭所
  • 针对特定 EF Core 查询优化未知

    我有一个使用 EF Core 3 1 在 NET Framework 上运行的 webjob 项目 Webjob 处理来自 Azure 服务总线的消息并将其保存到 Azure SQL 数据库中 我遇到的问题是 Azure SQL 数据库为
  • Python psycopg2 不是 utf-8

    我使用 Python 连接到我的 postgresql 数据库 如下所示 conn psycopg2 connect database fedour user fedpur password host 127 0 0 1 port 5432
  • 无法从 D 中的 std.range 中切片 Take!R?

    我正在尝试使用切片运算符从 std range 获取 take 函数的返回值的切片 我的代码 auto tempChunk a b c d auto a tempChunk take 3 writeln a 0 2 由于本例中的 Take
  • 按后缀组合列表元素

    给定两个带后缀的列表 l1 C 1 B 1 A l2 B 2 C 2 D 我想像这样组合它们 C 1 C 2 B 1 B 2 A D 元素将与l1作为锚 这意味着 如果C 出现在之前B in l1 相同的顺序将保留在输出中 此外 具有相同前