【发布时间】:2021-02-02 06:47:14
【问题描述】:
我有一本包含一周饮食信息的字典,我们需要根据输出元数据计算客户食用不同类别食物的天数。输出元数据将食物类别作为键,将饮食中的食物作为值。 1, 0 的值是布尔指标,分别表示客户是否吃饭。
这里的顾客在星期四吃了鸡肉和羊肉,但在求和时,我们只想计算一天的“肉”。元数据中的类别分组将来可能会发生变化,例如如果顾客吃鱼。
你能帮我解决这个问题吗?
diet = {'chicken' : [1, 0, 0, 1, 0, 1, 0],
'lamb' : [0, 0, 1, 1, 0, 1, 1],
'salad' : [0, 0, 1, 0, 1, 1, 1]}
output_metadata = {'Meat' : ['chicken', 'lamb'],
'Veggies' : ['salad'],
'Overall' : ['chicken', 'lamb', 'salad']}
想要的输出是
{'Meat': 5, 'Veggies': 4, 'Overall': 6}
【问题讨论】:
-
StackOverflow 不是免费的编码服务。你应该try to solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
-
好像你只需要一些嵌套循环。
-
数字1和0分别代表什么?如果只是当天有没有吃,最好用
True和False。使用数字会使它们看起来像是数量。 -
@Barmar,我已经更新了这个问题。更新真/假看起来很长,所以我没有。谢谢!
-
{k: sum(map(any, zip(*(Diet[f] for f in v)))) for k, v in output_metadata.items()}}
标签: python algorithm dictionary data-structures