如何用字典推导式或单行代码获取嵌套字典各键的最大值
提取嵌套字典中各键的最大值(无额外库的单行方案)
给定嵌套字典:
{'adcellh': {'e': 1, 'l': 2, 'h': 1}, 'llfechh': {'l': 2, 'e': 1, 'h': 2}, 'hkleeemvt': {'h': 1, 'l': 1, 'e': 3}}
目标是生成各键对应最大值的字典:
{'e': 3, 'l': 2, 'h': 2}
你已经通过循环实现了需求:
s = {} for i in d.values(): for j in i: if j in s and s[j] > i[j]: continue else: s[j] = i[j]
无额外库的单行字典推导式方案
利用所有子字典键相同的前提,可以直接通过字典推导式完成:
result = {k: max(sub[k] for sub in d.values()) for k in next(iter(d.values()))}
说明:
next(iter(d.values()))获取第一个子字典的所有键,因为所有子字典键一致,所以能覆盖全部目标键- 对每个键
k,遍历所有子字典,用max()取出该键对应的最大值 - 最终通过推导式直接生成目标字典
内容的提问来源于stack exchange,提问作者Remrem
相关产品推荐
相关产品推荐

