求助,如何将数据类型转换成指定的?

作者站长头像
站长
· 阅读数 6
data = [
    ('连衣裙', '白色', 'S', 1),
    ('连衣裙', '白色', 'S', 1),
    ('连衣裙', '黑色', 'M', 1),
    ('裤子', '白色', 'S', 1),

]

result = [
    ('连衣裙', '白色', 'S', 2, 3),
    ('连衣裙', '白色', 'M', 1, 3),
    ('裤子', '白色', 'S', 1, 1),
]

求助大佬如何将data的数据转换成result这种,效果就是统计标题相同的颜色尺码数量,最后一个是总计,并以从高到低排序, 举例只有少量数据,实际数据有几千个

求助,如何将数据类型转换成指定的?

回复
1个回答
avatar
test
2024-07-05

参考一下这个实现吧


from collections import Counter

data = [
    ('连衣裙', '白色', 'S', 1),
    ('连衣裙', '白色', 'S', 1),
    ('连衣裙', '黑色', 'M', 1),
    ('裤子', '白色', 'S', 1),
]

# 计算每个 (标题, 颜色, 尺码) 的数量
counter = Counter(tuple(x[:-1]) for x in data)

# 计算每个标题的总数
title_counts = Counter(x[0] for x in data)

# 构建结果列表
result = [(key[0], key[1], key[2], count, title_counts[key[0]]) for key, count in counter.items()]

# 根据总数从高到低排序
result.sort(key=lambda x: (-x[4], x[0], x[1], x[2]))

print(result)

输出:

[    ('连衣裙', '白色', 'S', 2, 3),    ('连衣裙', '黑色', 'M', 1, 3),    ('裤子', '白色', 'S', 1, 1),]
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容