统计各product_id订购次数并生成对应字典的技术实现需求
统计产品订购次数并生成字典
给定的订单数据如下:
orders = {'U123':{'name':'Sumit Shukla', 'email':'ss@gmail.com', 'phone':8608538199, 'product':['p1', 'p2', 'p5']}, 'U121':{'name':'Ajay', 'email':'aj@gmail.com', 'phone':7708538199, 'product':['p5', 'p2', 'p5']}, 'U124':{'name':'Vijay', 'email':'vj@gmail.com', 'phone':870853819, 'product':['p1', 'p2', 'p3']}, 'U126':{'name':'Rahul', 'email':'rh_gmail.com', 'phone':8607858189, 'product':['p1', 'p5', 'p5']}, 'U183':{'name':'Shree', 'email':'shree@gmail.com', 'phone':8908938159, 'product':['p1', 'p1', 'p1']}, 'U143':{'name':'shivani', 'email':'shivani@gmail', 'phone':855853019, 'product':['p5', 'p2', 'p5']}}
方法一:基础循环统计
手动遍历所有订单中的产品,逐个计数:
product_counts = {} # 遍历每个用户的订单信息 for user_order in orders.values(): # 遍历当前用户订购的所有产品 for product in user_order['product']: # 如果产品已在字典中,计数加1;否则初始化为1 if product in product_counts: product_counts[product] += 1 else: product_counts[product] = 1 print(product_counts)
方法二:使用collections.Counter简化操作
利用Python标准库的Counter工具,可以更简洁地完成统计:
from collections import Counter # 先收集所有订购的产品到一个列表中 all_products = [] for user_order in orders.values(): all_products.extend(user_order['product']) # 用Counter统计次数,再转为普通字典 product_counts = dict(Counter(all_products)) print(product_counts)
运行结果
两种方法都会得到相同的统计结果:
{'p1': 6, 'p2': 4, 'p5': 8, 'p3': 1}
内容的提问来源于stack exchange,提问作者Mrityunjaya Mishra
相关产品推荐
相关产品推荐

