Python如何根据独立列表指定的键计算字典对应值总和
实现方式
直接用Python内置的sum()函数做累加即可,一行代码就能完成需求:
hits = {"The Weeknd": 6, "Maroon 5": 0, "Justin Bieber": 8, "Post Malone": 5} artists = ["The Weeknd", "Justin Bieber"] total = sum(hits[artist] for artist in artists) print(total) # 输出结果:14
异常兼容写法
如果你没法保证artists列表里的所有歌手名一定存在于hits字典中,上面的写法会抛出KeyError。这种场景可以用字典的get()方法给不存在的键设置默认值0,不存在的歌手默认按0计算,不会中断求和逻辑:
total = sum(hits.get(artist, 0) for artist in artists)
性能注意点
不要写遍历整个hits字典再判断键是否在artists列表里的逻辑:
- 字典按键取值的时间复杂度是O(1),按
artists列表遍历取值的整体时间复杂度是O(k),其中k是artists列表的长度 - 遍历整个
hits字典的时间复杂度是O(m),其中m是hits字典的键值对数量,当hits体量远大于artists时,性能差距会非常明显
内容的提问来源于stack exchange,提问作者HelpMeCode
相关产品推荐
相关产品推荐

