微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何根据python中的另一个字典迭代一个字典?

如何解决如何根据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 举报,一经查实,本站将立刻删除。