如何统计交易字典中各商品项的出现次数?
统计交易中商品项的出现次数
给定交易数据字典和商品列表:
transactions = { "T1": ["A", "B", "C", "E"], "T2": ["A", "D", "E"], "T3": ["B", "C", "E"], "T4": ["B", "C", "D", "E"], "T5": ["B", "D", "E"] } items = ["A", "B", "C", "D", "E"]
已经初始化了统计字典occurr:
occurr = dict() for x in items: occurr[x] = 0
需要把这个字典更新为各商品的实际出现次数,目标结果:
{'A': 2, 'B':4, 'C': 3, 'D': 3, 'E': 5}
方法一:嵌套循环更新已有字典
直接遍历每一笔交易里的商品,对统计字典的对应值累加:
# 遍历所有交易的商品列表 for items_list in transactions.values(): for item in items_list: occurr[item] += 1 print(occurr)
运行后occurr就会变成目标结果,这种方法完全基于你已初始化的字典来修改,逻辑直白易懂。
方法二:用collections.Counter快速统计
如果不想手动写循环,可以用Python标准库的Counter工具,一步完成统计:
from collections import Counter # 把所有交易的商品合并成一个列表 all_items = [] for items_list in transactions.values(): all_items.extend(items_list) # 统计每个商品的出现次数 occurr = Counter(all_items) # 若需要严格保持items里的顺序,转成指定顺序的字典 occurr = {item: occurr[item] for item in items} print(occurr)
这种方法代码更简洁,适合处理大量交易数据的场景。
内容的提问来源于stack exchange,提问作者LeGOATJames23
相关产品推荐
相关产品推荐

