python - 用重复键展平元组?
问题描述
我试图转
x = [((1, ‘code’, ‘XXXX’), (1, ‘ref’, ‘112B’))]
进入[(1, (‘code’, ‘XXXX’), (‘ref’, ‘112B’))]
基本上第一个数字是关键。
我尝试使用itertools.groupby
函数,但结果却变得一团糟。
解决方案
您可以先使用将列表转换为临时字典collections.defaultdict
,然后再将其转换为您想要的格式。
from collections import defaultdict
x = [((1, 'code', 'XXXX'), (1, 'ref', '112B'))]
temp = defaultdict(list)
for t in x[0]:
temp[t[0]].append(t[1:])
print(temp)
# defaultdict(<class 'list'>, {1: [('code', 'XXXX'), ('ref', '112B')]})
final = [(k, *v) for k, v in temp.items()]
print(final)
# [(1, ('code', 'XXXX'), ('ref', '112B'))]
推荐阅读
- php - 如果数据库中存在选项值,则隐藏
- java - Kotlin 扩展 Java 类 - 未实现抽象方法 Getter
- python - 如何使用 pip 在 ppc64le 上安装 PyTorch?
- javascript - 从生成的列表 PHP 填充动态表单行
- c# - 如何在 ASP.NET Core MVC 中获取包含的字段
- python - 在 Python 中为 modbus 计算 CRC16
- api - Guidebox 从哪里获取数据?
- java - 如何遍历这个 json 对象并格式化它
- azure - EventProcessorClient - AmqpRetryOptions 选项行为
- javascript - 为什么我的 HTML 表单不显示我的输入?