You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python技术求助:完善裤装尺码销量统计函数的计数功能

解决方法

你已经成功拿到了所有唯一尺码,接下来只需要为每个唯一尺码统计它在原列表中的出现次数,再把尺码+次数依次存入结果列表即可。下面提供几种实现思路:

方法1:基于你现有代码的快速改进

直接利用列表的count()方法,对每个唯一尺码统计出现次数:

def tally(sizes: list) -> list:
    unique = []
    for i in sizes:
        if i not in unique:
            unique.append(i)
    # 构建结果列表
    result = []
    for size in unique:
        result.append(size)
        result.append(sizes.count(size))
    return result

# 测试
a = [30, 34, 30, 20, 34]
print(tally(a))  # 输出: [30, 2, 34, 2, 20, 1]

方法2:用字典统计(更高效)

如果输入列表很大,count()方法会重复遍历列表导致效率偏低。可以用字典先一次性统计所有尺码的销量,再转换为目标格式:

def tally(sizes: list) -> list:
    count_dict = {}
    for size in sizes:
        # 若尺码已在字典中则计数+1,否则初始化为1
        count_dict[size] = count_dict.get(size, 0) + 1
    # 展开字典的键值对为列表
    result = []
    for size, count in count_dict.items():
        result.append(size)
        result.append(count)
    return result

# 测试
a = [30, 34, 30, 20, 34]
print(tally(a))  # 输出: [30, 2, 34, 2, 20, 1]

注:Python 3.7+的字典会保留插入顺序,所以结果里的尺码顺序和原列表中首次出现的顺序一致,符合示例要求。

方法3:用collections.defaultdict简化统计

如果允许使用标准库,collections.defaultdict可以让字典统计的代码更简洁:

from collections import defaultdict

def tally(sizes: list) -> list:
    count_dict = defaultdict(int)
    for size in sizes:
        count_dict[size] += 1
    # 展开为结果列表
    result = []
    for size, count in count_dict.items():
        result.extend([size, count])
    return result

内容的提问来源于stack exchange,提问作者Underleague

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 00:27:20