如何解决如何根据python中的另一个字典迭代一个字典?
我有一个包含一周饮食信息的字典,我们需要根据输出元数据计算客户食用不同类别食物的天数。输出元数据将食物类别作为键,将饮食中的食物作为值。值 1,0
是布尔指标,分别表示顾客是否吃过饭。
在这里,客户在星期四吃了鸡肉和羊肉,但在总结时,我们只想计算一天的“肉”。元数据中的类别分组将来可能会发生变化,例如如果客户吃鱼。
你能帮我解决这个问题吗?
diet = {'chicken' : [1,1,0],'lamb' : [0,1],'salad' : [0,1]}
output_Metadata = {'Meat' : ['chicken','lamb'],'Veggies' : ['salad'],'Overall' : ['chicken','lamb','salad']}
期望的输出是
{'Meat': 5,'Veggies': 4,'Overall': 6}
解决方法
如果您想在不同的日子检查任何选定类别的非零值,您可以将选定的数组压缩在一起。例如:
def days(diet,categories):
it = zip(*(diet[c] for c in categories))
return sum(any(x) for x in it)
现在您可以构建输出字典:
output = {k: days(Diet,v) for k,v in output_metadata.items()}
作为单线(实际上不要这样做):
output = {k: sum(any(x) for x in zip(*(Diet[c] for c in v))) for k,v in output_metadata.items()}
但实际上,您拥有的是一个伪装的数据框。考虑使用 pandas 库来做这样的事情。您将能够单独选择日期和/或类别,并汇总您想要的任何统计数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。