如何获取字典内层嵌套列表中各键对应的最大值列表?
解决字典中每个键对应嵌套列表的最大值收集问题
嘿,我来帮你搞定这个问题!先看你的需求:从字典每个键对应的嵌套列表里提取最大值,把这些最大值组成一个列表。你的示例里,mydict每个值都是包含单元素子列表的列表,期望结果是[9,6,3]。
为什么你的原有代码不对?
你之前写的代码:
result = max(map(max, i) for i in worksheet.values())
问题出在最外层的max()函数——它会把生成器里的所有最大值(也就是每个键对应的9、6、3)再取一次整体的最大值,所以最终只返回9,而不是你想要的列表。
正确的解决方案
我们需要做的是遍历每个键对应的值,计算该值的最大值,然后把这些结果收集成列表,有两种简单的实现方式:
方式1:列表推导式(最直观)
mydict = { "day1": [[9],[2],[3]], "day2": [[4],[5],[6]], "day3": [[3],[2],[1]] } result = [max(map(max, value)) for value in mydict.values()] print(result) # 输出: [9, 6, 3]
拆解一下逻辑:
- 对字典里的每个
value(比如[[9],[2],[3]]),先用map(max, value)遍历每个子列表,取出子列表的最大值,得到[9, 2, 3] - 再对这个中间列表用
max(),得到该键对应的最终最大值 - 列表推导式会把所有键对应的最大值自动收集成列表
方式2:生成器表达式转列表
如果你更习惯生成器的写法,也可以这样:
result = list(max(map(max, v)) for v in mydict.values())
这样就能得到你想要的[9,6,3]啦!
内容的提问来源于stack exchange,提问作者Victor
相关产品推荐
相关产品推荐

