
如何将数据转换为带有统计信息的特定格式
你遇到的问题是将类似以下形式的数据转换为新格式:
data = [ ('连衣裙', '白色', 's', 1), ('连衣裙', '白色', 's', 1), ('连衣裙', '黑色', 'm', 1), ('裤子', '白色', 's', 1),]
目标格式需要统计相同标题下的颜色和尺码数量,并在最后一个字段中显示总数,并根据总数从高到低进行排序:
result = [ ('连衣裙', '白色', 's', 2, 3), ('连衣裙', '白色', 'm', 1, 3), ('裤子', '白色', 's', 1, 1),]
解决方法如下:
使用counter来计算每个(标题, 颜色, 尺码)元组的数量:
from collections import countercounter = counter(tuple(x[:-1]) for x in data)
counter = { ('连衣裙', '白色', 's'): 2, ('连衣裙', '黑色', 'm'): 1, ('裤子', '白色', 's'): 1,}
计算每个标题的总数:
title_counts = counter(x[0] for x in data)
title_counts = { '连衣裙': 3, '裤子': 1,}
构建结果列表,包含每个元组、其数量以及对应的标题总数:
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)]
以上就是如何将数据转换为带有统计信息的特定格式?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1353096.html
微信扫一扫
支付宝扫一扫