python - 什么是使元组列表中的元素在python中唯一的有效方法?
问题描述
假设我有一个元组列表
l = [('A', 12345), ('A', 2435), ('A', 2342), ('B', 2968), ('B', 9483), ('C', 563)]
使列表中的项目独一无二的最有效方法是什么,如下所示:
l = [('A.1', 12345), ('A.2', 2435), ('A.3', 2342), ('B.1', 2968), ('B.2', 9483), ('C.1', 563)]
解决方案
一种方法可能是分组,itertools.groupby()
然后“扩展”这些组:
from itertools import groupby
from operator import itemgetter
l = [('A', 12345), ('A', 2435), ('A', 2342), ('B', 2968), ('B', 9483), ('C', 563)]
print([
(f'{k}.{index}', v)
for k, g in groupby(l, itemgetter(0))
for index, (_, v) in enumerate(g, start=1)
])
印刷:
[('A.1', 12345), ('A.2', 2435), ('A.3', 2342), ('B.1', 2968), ('B.2', 9483), ('C.1', 563)]
请注意,要使分组起作用,输入l
需要按分组键排序,这似乎是此示例输入的情况。
推荐阅读
- windows - 在 Windows 环境下的 GithubActions 中运行 cypress
- java - 如何用 Java 中的递归解决这个问题?
- javascript - div innerHTML 未更新
- pimcore - Pimcore 6 CSV 导入
- latex - 如何使文档标题变粗并变大?
- java - Whitelabel 错误页面,而不是缺少必需的参数
- python - 在 pythong/asyncio 中同时运行协程无法正常工作
- spring - Spring Boot @Async 方法的异常处理
- ios - 图像裁剪之外的 react-native-perspective-image-cropper 在 IOS 中添加白色背景
- javascript - Vue 在下拉更新中观察多个绑定的变化