如何对Python dict的5个随机样本进行price值求和聚合?
问题解决方法
你遇到的问题是因为random.sample(mydict.items(), 5)返回的是元组列表,每个元素都是(键, 包含name和price的子字典),直接用sum()去加这些元组肯定会报错——Python没法把元组当成数值来求和。
修复方案1:直接处理采样后的元组列表
修改求和的代码,遍历每个采样到的元组,提取子字典里的price值再求和:
import random mydict = { 1: {"name":"item1","price": 16}, 2: {"name":"item2","price": 14}, 3: {"name":"item3","price": 16}, 4: {"name":"item4","price": 14}, 5: {"name":"item5","price": 13}, 6: {"name":"item6","price": 16}, 7: {"name":"item7","price": 11}, 8: {"name":"item8","price": 12}, 9: {"name":"item9","price": 14}, 10: {"name":"item10","price": 14}, } randomlist = random.sample(mydict.items(), 5) # 提取每个元组中子字典的price值求和 print(sum(item[1]['price'] for item in randomlist))
修复方案2:直接采样字典的值(更简洁)
如果不需要原字典的键,直接采样mydict.values()(也就是所有子字典),再提取price求和,代码更清爽:
import random mydict = { 1: {"name":"item1","price": 16}, 2: {"name":"item2","price": 14}, 3: {"name":"item3","price": 16}, 4: {"name":"item4","price": 14}, 5: {"name":"item5","price": 13}, 6: {"name":"item6","price": 16}, 7: {"name":"item7","price": 11}, 8: {"name":"item8","price": 12}, 9: {"name":"item9","price": 14}, 10: {"name":"item10","price": 14}, } # 直接采样子字典列表 random_values = random.sample(mydict.values(), 5) print(sum(v['price'] for v in random_values))
两种方案都能正确计算5个随机条目的price总和,选哪种看你是否需要保留原字典的键。
内容的提问来源于stack exchange,提问作者NIPPE
相关产品推荐
相关产品推荐

