python - 在 Python 中的对象列表中查找唯一元素
问题描述
我有 Python 中的对象列表。每个对象都包含自己的列表。该列表包含该对象的一些类别。每个列表恰好包含 15 个元素(可以是字母、数字或符号 -),例如。
['A', 'A', '1', '-', ... , 'B'] or ['-', 'C', 'X', '-', ... , 'D']
我的目标是为列表中的每个类别或更精确地找到每个位置的唯一值,最好以字典的形式存储,例如:
{0: {'A', '-'} 1: {'A', 'C'} ... }
所以我需要遍历列表中的所有对象并保存这些唯一值。有没有办法以优雅的pythonic方式做到这一点?
感谢所有的答案。
解决方案
您可以将对象位置明智地配对zip
>>> a=['A', 'A', '1', '-', 'B']
>>> b=['-', 'C', 'X', '-', 'D']
>>> list(zip(a,b))
[('A', '-'), ('A', 'C'), ('1', 'X'), ('-', '-'), ('B', 'D')]
>>>
并从您的样本中获取该字典,您可以添加enumerate
到组合中
>>> dict(enumerate(zip(a,b)))
{0: ('A', '-'), 1: ('A', 'C'), 2: ('1', 'X'), 3: ('-', '-'), 4: ('B', 'D')}
>>>
并获得唯一的此类配对,您可以使用它set
来删除重复项
>>> c=['A', 'A', '1', '-', 'B', 'A', 'A', '1', '-', 'B']
>>> d=['-', 'C', 'X', '-', 'D', '-', 'C', 'X', '-', 'D']
>>> list(zip(c,d))
[('A', '-'), ('A', 'C'), ('1', 'X'), ('-', '-'), ('B', 'D'), ('A', '-'), ('A', 'C'), ('1', 'X'), ('-', '-'), ('B', 'D')]
>>> set(zip(c,d))
{('A', '-'), ('1', 'X'), ('A', 'C'), ('-', '-'), ('B', 'D')}
>>>
推荐阅读
- pickle - 加载 XGBoost 模型:ModuleNotFoundError:没有名为“sklearn.preprocessing._label”的模块
- python - 如何在 Django 中处理多文件输入字段
- python - Python 3.7 psycopg2 - Xcode 错误“错误:命令‘gcc’失败,退出状态为 1”
- python - 使用 Python 通过 Mailgun 提交变量时出错
- mysql - 在特定事件之前计数事件
- bash - 如何使用 alt-left 和 alt-right 在 bash 中实现“后退”和“前进”?
- r - R 空间 - 边界图
- google-maps - Google API 发票异常增加
- c - 编译成功后SDL2没有运行的问题
- python - 如果设置了其他可选值,则设置 argparse 可选值