为什么这个字典为所有键生成相同的值?

2024-09-30 14:21:35 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我对Python还不熟悉,我试图从这两个列表中生成以下词典理解

top5shows = ['Soldier','The Run', 'Metachomas','The Average Lad','James Eathersen']
budget =  [200, 110, 34, 2, 0.5]
revenue = [220,190, 80, 2.3, 1]


profit_dict = {show: (((rev - bud) / bud) * 100) for show in top5shows for rev in revenue for bud in budget}`

这样做的目的是制作一本以电影名称为关键字的字典,以利润百分比作为价值。但是,结果是所有键的值都相同,即列表中最后一部电影的利润百分比

结果:

{'Soldier': 100.0, 'The Run': 100.0, 'Metachomas': 100.0, 'The Average Lad': 100.0, 'James Eathersen': 100.0}

Tags: therunin列表forbudgetaveragejames
2条回答

假设您希望并行而不是嵌套地迭代列表(代码也是如此),工作解决方案如下所示:

profit_dict = {show: (((revenue[idx] - budget[idx]) / budget[idx]) * 100) for idx, show in enumerate(top5shows)}

你不需要在字典里做三重for循环

profit_dict = {show: (((revenue[i] - budget[i]) / budget[i]) * 100) for i, show in enumerate(top5shows)}
print(profit_dict) # {'Soldier': 10.0, 'The Run': 72.72727272727273, 'Metachomas': 135.29411764705884, 'The Average Lad': 14.999999999999991, 'James Eathersen': 100.0}

相关问题 更多 >