Python中如何用字典推导式计算两个字典同key对应值的商
错误原因
你编写的字典推导式中,取值时固定使用了s_lst[2]作为键,遍历全程都在计算两个字典同一个固定键的商,和当前遍历得到的键k没有关联,因此所有value都相同。
正确实现代码
如果两个字典的键完全匹配,直接遍历键取值即可:
stat_dict = {'good': 6537048, 'evil': 32000, 'neutral': 69467, 'nihilist': 81977, 'cool': 771180} count_dict = {'good': 2, 'evil': 2, 'neutral': 2, 'nihilist': 2, 'cool': 2} avg_dict = {k: stat_dict[k] / count_dict[k] for k in stat_dict}
运行后得到的结果符合预期:
{'good': 3268524.0, 'evil': 16000.0, 'neutral': 34733.5, 'nihilist': 40988.5, 'cool': 385590.0}
鲁棒性优化(可选)
如果无法保证两个字典的键完全一致,可以先取键的交集再计算,避免抛出KeyError:
avg_dict = {k: stat_dict[k] / count_dict[k] for k in stat_dict.keys() & count_dict.keys()}
内容的提问来源于stack exchange,提问作者sds
相关产品推荐
相关产品推荐

