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

编写Python函数统计字典值中物品数量并生成直方图

物品出现次数统计与直方图实现

一、统计物品出现次数的函数实现

给定输入数据:

data = {'customer1': ['milk', 'bread'],
 'customer2': ['butter'],
 'customer3': ['beer', 'diapers'],
 'customer4': ['milk', 'bread', 'butter'],
 'customer5': ['bread']}

方法1:基础循环遍历

def count_items(customer_data):
    item_counts = {}
    for items in customer_data.values():
        for item in items:
            item_counts[item] = item_counts.get(item, 0) + 1
    return item_counts

# 调用示例
result = count_items(data)
print(result)
# 输出: {'milk': 2, 'bread': 3, 'butter': 2, 'beer': 1, 'diapers': 1}

方法2:使用collections.Counter(简洁高效)

from collections import Counter

def count_items(customer_data):
    all_items = []
    for items in customer_data.values():
        all_items.extend(items)
    return dict(Counter(all_items))

# 调用示例
result = count_items(data)
print(result)
# 输出: {'milk': 2, 'bread': 3, 'butter': 2, 'beer': 1, 'diapers': 1}

二、修正直方图代码并实现

你提供的示例代码逻辑偏离需求,它错误地尝试统计每个顾客的物品集合长度。以下是修正后的代码,基于统计结果生成文本直方图:

def build_histogram(item_counts):
    print("物品出现次数直方图:")
    # 按物品名称排序后输出
    for item, count in sorted(item_counts.items()):
        print(f"{item:<10} {'*' * count}")

# 调用示例
build_histogram(result)

运行后输出:

物品出现次数直方图:
beer       *
bread      ***
butter     **
diapers    *
milk       **

完整整合示例

from collections import Counter

def count_items(customer_data):
    all_items = []
    for items in customer_data.values():
        all_items.extend(items)
    return dict(Counter(all_items))

def build_histogram(item_counts):
    print("物品出现次数直方图:")
    for item, count in sorted(item_counts.items()):
        print(f"{item:<10} {'*' * count}")

# 输入数据
data = {'customer1': ['milk', 'bread'],
 'customer2': ['butter'],
 'customer3': ['beer', 'diapers'],
 'customer4': ['milk', 'bread', 'butter'],
 'customer5': ['bread']}

# 执行统计并生成直方图
result = count_items(data)
print("统计结果:", result)
build_histogram(result)

运行输出:

统计结果: {'milk': 2, 'bread': 3, 'butter': 2, 'beer': 1, 'diapers': 1}
物品出现次数直方图:
beer       *
bread      ***
butter     **
diapers    *
milk       **

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:05:48