求助:如何获取Python字典列表中所有键的最大值?
解决字典列表中每个键取最大值的问题
针对你给出的字典列表:
ls = [{'a':2, 'b':4, 'c':7}, {'a':5, 'b': 2, 'c':6}, {'a':1, 'b': 3, 'c':8}]
你之前用max(ls, key=lambda x:x['a'])只能拿到a值最大的整个字典,没法单独对每个键取最大值,这里提供几种实用的解法:
方法1:字典推导式(适用于所有字典键一致的情况)
直接遍历每个键,收集该键在所有字典中的值并取最大值:
result = {key: max(d[key] for d in ls) for key in ls[0].keys()}
执行后会得到目标结果{'a':5, 'b':4, 'c':8}。
方法2:逐个键计算最大值(直观易懂)
这种方式逻辑清晰,适合新手理解:
result = {} # 遍历所有需要处理的键(假设所有字典键相同) for key in ls[0]: # 收集当前键在所有字典中的值,取最大值存入结果 max_val = max(d[key] for d in ls) result[key] = max_val
方法3:遍历字典动态更新最大值(内存友好)
如果字典列表数据量较大,这种方式无需一次性收集所有值,能节省内存,还兼容部分字典键不一致的场景:
result = {} for d in ls: for key, val in d.items(): # 若键未在结果中,或当前值更大则更新 if key not in result or val > result[key]: result[key] = val
内容的提问来源于stack exchange,提问作者NeedToCodeAgain
相关产品推荐
相关产品推荐

