如果相同则删除多维列表中的元组

2024-02-06

我有一个元组列表,即:

[[[('p', 'u'), ('r', 'w')], [('t', 'q')]], [[('p', 'u'), ('r', 'w')], [('v', 'q')]], [[('p', 'u'), ('r', 'w')], [('t', 's')]], [[('p', 'u'), ('r', 'w')], [('v', 's')]], [[('p', 'w'), ('r', 'u')], [('t', 'q')]], [[('p', 'w'), ('r', 'u')], [('v', 'q')]], [[('p', 'w'), ('r', 'u')], [('t', 's')]], [[('p', 'w'), ('r', 'u')], [('v', 's')]], [[('r', 'u'), ('p', 'w')], [('t', 'q')]], [[('r', 'u'), ('p', 'w')], [('v', 'q')]], [[('r', 'u'), ('p', 'w')], [('t', 's')]], [[('r', 'u'), ('p', 'w')], [('v', 's')]], **[[('r', 'w'), ('p', 'u')], [('t', 'q')]]**, [[('r', 'w'), ('p', 'u')], [('v', 'q')]], [[('r', 'w'), ('p', 'u')], [('t', 's')]], [[('r', 'w'), ('p', 'u')], [('v', 's')]]]

但现在例如元素[[('p','u'),('r','w')], [('t','q')]]

是相同的[[('r','w'),('p','u')], [('t','q')]],其中被标记为fat在列表中。

所以在列表中我有 16 个元素,其中每个元素都是双精度的。

现在,我想删除重复项,因为我只剩下前八个元素。

如此天真地,我尝试过

[[list(y) for y in set([tuple(set(x)) for x in doublegammas1])]]

但在这里,他说:

TypeError: unhashable type: 'list'

所以我的问题是:

如何扩展列表理解,使其适用于更多维度的列表?


列表不可散列,元组are可散列的。然后你需要采取set这些元组。但在这些元组内部,您需要忽略顺序。但一个集合的元组不可散列,因此您需要使用元组frozenset https://docs.python.org/3/library/stdtypes.html#frozenset对象:

uniques = {tuple(map(frozenset, i)) for i in doublegammas1}

print(uniques)

{(frozenset({('p', 'w'), ('r', 'u')}), frozenset({('t', 'q')})),
 (frozenset({('p', 'w'), ('r', 'u')}), frozenset({('v', 'q')})),
 (frozenset({('p', 'w'), ('r', 'u')}), frozenset({('v', 's')})),
 (frozenset({('p', 'u'), ('r', 'w')}), frozenset({('t', 's')})),
 (frozenset({('p', 'u'), ('r', 'w')}), frozenset({('t', 'q')})),
 (frozenset({('p', 'u'), ('r', 'w')}), frozenset({('v', 'q')})),
 (frozenset({('p', 'u'), ('r', 'w')}), frozenset({('v', 's')})),
 (frozenset({('p', 'w'), ('r', 'u')}), frozenset({('t', 's')}))}

然后您可以通过itertools unique_everseen recipe https://docs.python.org/3/library/itertools.html#itertools-recipes,也可以在第三方库中使用toolz.unique https://toolz.readthedocs.io/en/latest/api.html#toolz.itertoolz.unique or more_itertools.unique_everseen https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.unique_everseen:

from more_itertools import unique_everseen

def uniquekey(x):
    return tuple(map(frozenset, x))

res = list(unique_everseen(doublegammas1, key=uniquekey))

print(res)

[[[('p', 'u'), ('r', 'w')], [('t', 'q')]],
 [[('p', 'u'), ('r', 'w')], [('v', 'q')]],
 [[('p', 'u'), ('r', 'w')], [('t', 's')]],
 [[('p', 'u'), ('r', 'w')], [('v', 's')]],
 [[('p', 'w'), ('r', 'u')], [('t', 'q')]],
 [[('p', 'w'), ('r', 'u')], [('v', 'q')]],
 [[('p', 'w'), ('r', 'u')], [('t', 's')]],
 [[('p', 'w'), ('r', 'u')], [('v', 's')]]]

输入数据

# input data
doublegammas1 = [[[('p', 'u'), ('r', 'w')], [('t', 'q')]],
                 [[('p', 'u'), ('r', 'w')], [('v', 'q')]],
                 [[('p', 'u'), ('r', 'w')], [('t', 's')]],
                 [[('p', 'u'), ('r', 'w')], [('v', 's')]],
                 [[('p', 'w'), ('r', 'u')], [('t', 'q')]],
                 [[('p', 'w'), ('r', 'u')], [('v', 'q')]],
                 [[('p', 'w'), ('r', 'u')], [('t', 's')]],
                 [[('p', 'w'), ('r', 'u')], [('v', 's')]],
                 [[('r', 'u'), ('p', 'w')], [('t', 'q')]],
                 [[('r', 'u'), ('p', 'w')], [('v', 'q')]],
                 [[('r', 'u'), ('p', 'w')], [('t', 's')]],
                 [[('r', 'u'), ('p', 'w')], [('v', 's')]],
                 [[('r', 'w'), ('p', 'u')], [('t', 'q')]],
                 [[('r', 'w'), ('p', 'u')], [('v', 'q')]],
                 [[('r', 'w'), ('p', 'u')], [('t', 's')]],
                 [[('r', 'w'), ('p', 'u')], [('v', 's')]]]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果相同则删除多维列表中的元组 的相关文章

  • Lighttpd 和 cgi python

    我正在尝试通过 lighttpd 执行一些 python 脚本 但是当我尝试运行它时 我只得到一个要求我下载的空白文件 lighttpd conf server modules mod access mod alias mod access
  • 是否有解决方法可以通过 CoinGecko API 安全检查?

    我在工作中运行我的代码 一切都很顺利 但在不同的网络 家庭 WiFi 上 我不断收到403访问时出错CoinGecko V3 API https www coingecko com api documentations v3 可以观察到 在
  • 如何手动计算分类交叉熵?

    当我手动计算二元交叉熵时 我应用 sigmoid 来获取概率 然后使用交叉熵公式并平均结果 logits tf constant 1 1 0 1 2 labels tf constant 0 0 1 1 1 probs tf nn sigm
  • 与区域指示符字符类匹配的 python 正则表达式

    我在 Mac 上使用 python 2 7 10 表情符号中的标志由一对表示区域指示符号 https en wikipedia org wiki Regional Indicator Symbol 我想编写一个 python 正则表达式来在
  • 在 django ORM 中查询时如何将 char 转换为整数?

    最近开始使用 Django ORM 我想执行这个查询 select student id from students where student id like 97318 order by CAST student id as UNSIG
  • Python 中的哈希映射

    我想用Python实现HashMap 我想请求用户输入 根据他的输入 我从 HashMap 中检索一些信息 如果用户输入HashMap的某个键 我想检索相应的值 如何在 Python 中实现此功能 HashMap
  • 安装了 32 位的 Python,显示为 64 位

    我需要运行 32 位版本的 Python 我认为这就是我在我的机器上运行的 因为这是我下载的安装程序 当我重新运行安装程序时 它会将当前安装的 Python 版本称为 Python 3 5 32 位 然而当我跑步时platform arch
  • 您可以格式化 pandas 整数以进行显示,例如浮点数的“pd.options.display.float_format”?

    我见过this https stackoverflow com questions 18404946 py pandas formatdataframe and this https stackoverflow com questions
  • 立体太阳图 matplotlib 极坐标图 python

    我正在尝试创建一个与以下类似的简单的立体太阳路径图 http wiki naturalfrequent com wiki Sun Path Diagram http wiki naturalfrequency com wiki Sun Pa
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • Pandas Merge (pd.merge) 如何设置索引和连接

    我有两个 pandas 数据框 dfLeft 和 dfRight 以日期作为索引 dfLeft cusip factorL date 2012 01 03 XXXX 4 5 2012 01 03 YYYY 6 2 2012 01 04 XX
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • datetime.datetime.now() 返回旧值

    我正在通过匹配日期查找 python 中的数据存储条目 我想要的是每天选择 今天 的条目 但由于某种原因 当我将代码上传到 gae 服务器时 它只能工作一天 第二天它仍然返回相同的值 例如当我上传代码并在 07 01 2014 执行它时 它
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • “隐藏”内置类对象、函数、代码等的名称和性质[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我很好奇模块中存在的类builtins无法直接访问的 例如 type lambda 0 name function of module
  • pyspark 将 twitter json 流式传输到 DF

    我正在从事集成工作spark streaming with twitter using pythonAPI 我看到的大多数示例或代码片段和博客是他们从Twitter JSON文件进行最终处理 但根据我的用例 我需要所有字段twitter J
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 使用for循环时如何获取前一个元素? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 循环内的上一个和下一个值 https stackoverflow com questions 1011938 python previous and next values inside
  • Kivy - 单击按钮时编辑标签

    我希望 Button1 在单击时编辑标签 etykietka 但我不知道如何操作 你有什么想法吗 class Zastepstwa App def build self lista WebOps getList layout BoxLayo

随机推荐

  • 如何在 django Rest Framework 中反转 ViewSet 自定义操作的 URL

    我已经为 ViewSet 定义了自定义操作 from rest framework import viewsets class UserViewSet viewsets ModelViewSet action methods get det
  • QTableView格式化数字

    我已经创建了一个代表 我可以对齐并粗体显示表格上的数字 我想强制它们保留两位小数 例如 1 2 应显示为 1 20 这是 delagte 的标题 ifndef TOTALDELEGATE H define TOTALDELEGATE H i
  • Unity (Unity5) 中 c# 中的属性 - 可以避免支持变量吗

    对于Unity5 很难确切地知道正在使用什么版本的c Mono Net 我们的属性完全像这样 private int distance public int Distance private set distance value contr
  • 当元素为空时,保存会向 XML 添加返回换行符

    我正在加载一个 XML 文档 其中有一些没有内部文本的标签 如果我用一些数据填充内部文本 那么它会根据需要工作 您可以在一行上获得开始标记 内部文本和结束标记 如下所示
  • Android Web 视图中的 Html 音频

    我是 HTML 和 Java 的初学者 我正在尝试使用 HTML 和 Java 通过 Web 视图在 Android 上的简单 Web 应用程序中播放音频文件 我已经成功地让它在 Android 4 0 上运行 但它不适用于 2 3 3 或
  • Erubis 块助手通过 concat 抛出错误

    我有几个块助手 这是我正在做的一个简单示例 def wrap foo foo block data capture block content div class data div concat content end 我只是尝试 erub
  • Hibernate 缓存级别 1

    我对缓存级别 1 有一个误解 到目前为止 我发现缓存级别 1 仅用于推迟 sql 调用 直到刷新事务 但是物体呢 例如 我仅使用缓存级别 1 如果我在 1 个事务内多次加载同一个对象 会发生什么情况 hibernate 是否使用某种身份映射
  • 提交颠覆时可以修改文本文件吗?

    我想在正在提交的文本文件上运行以下脚本 Send the commands H and w to ed ed will append newline if the file does not end in one printf s n H
  • 将标记捕捉到最近的折线点 Google 地图颤动

    我正在为我的大学班车编写一个简单的公交车跟踪应用程序 我已经将公交车 GPS 绘制为导航箭头以及地图上的路线 现在 由于实际的 GPS 坐标与绘制的路线相比 与公交车的实际位置有一些偏差 因此稍微偏离了道路 我可以调用任何方式或方法将这些标
  • Rails ActiveRecord 按连接表关联计数排序

    我有一个Resource可以使用 Acts As Votable 宝石进行投票的模型 Github页面 https github com ryanto acts as votable 投票系统运行完美 但我试图显示按数量排序的页面votes
  • 如何更改已发布扩展的发布者名称?

    我想更改 VScode 市场中的发布者名称 我怎么做 迟回复 你看过这个吗VS Code Github 问题 https github com Microsoft vscode issues 3670 基本上他们说他们could从技术上讲
  • 处理 Hibernate 事务

    目前我已将此代码复制到each我的控制器方法之一 Transaction transaction HibernateUtil getSessionFactory getCurrentSession getTransaction if Hib
  • 在 Rails 3 应用程序中使用 jQuery-UJS 进行远程 link_to 时出现解析器错误:如何调试?

    我正在尝试使用 Rails 3 单击链接后替换 div 的内容 remote link remote gt true和 jQuery 到目前为止 我已经能够让控制器渲染正确的部分 同时使用 200 HTTP 代码进行响应 我设置了一些回调来
  • 在 R 中更改 Tor 身份

    我将 Tor 与 R 结合使用 并希望针对每个新请求更改我的 IP 我的代码如下 library RCurl opts lt list proxy 127 0 0 1 proxyport 8118 for i in 1 10 con lt
  • 适用于 Android 的 Adob​​e AIR 上的无引脚 OAuth

    我在 Adob e AIR for Desktop iOS 上使用了无引脚 OAuth 但在 Android 上则不行 由于某种原因 我们没有得到 oauth verifier 其中包含 Android 设备上 StageWebView 中
  • Kotlin 中从 String 到 List 的 jOOQ 转换器

    我正在处理一种罕见的情况 我发现将 JSON 存储在 RDBMS 字段中是可以接受的 JSON 文档是一个数组或键值对象 So the jOOQ转换器 https www jooq org doc 3 11 manual code gene
  • 我无法将 jsPDF 与 Angular 10 一起使用

    我试图使用打印我的页面jspdf图书馆 我已经尝试了很多解决方案来完成这里的示例和几乎每个谷歌建议链接 但我仍然无法修复它 这是我到目前为止所尝试过的 import as jsPDF from jspdf openPDF void cons
  • 提供通过 Node.js 中的链接标签链接到 HTML 文件的 CSS 样式表,无需框架

    我一直通过反复试验的方式自学 Node js 我使用 Node js HTTP 类构建了一个简单的服务器 我发现我可以异步读取文件并使用异步服务提供数据fs readFile cbk 回调方法 目前我不明白的是如何响应请求所需的所有其他资源
  • 如何使用 C# 调整动画 gif 图像的大小?

    有没有一种方法可以使用 C 创建动画 gif 图像的副本 我想要的是使用用户提供的高度和宽度参数生成给定 gif 图像的副本 我已经尝试了几个小时来完成此任务 但生成的图像没有保留原始动画 我花了一段时间才找到这个问题 但终于找到了解决方案
  • 如果相同则删除多维列表中的元组

    我有一个元组列表 即 p u r w t q p u r w v q p u r w t s p u r w v s p w r u t q p w r u v q p w r u t s p w r u v s r