You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从存储字典的列表中获取最小(key, value)键值对?

解决方法:从字典列表中提取最小Value对应的键值对

我懂你的困扰——本来想揪出列表里所有键值对中value最小的那一组,结果返回的却是整个字典,确实有点头疼。别急,给你几个实用的方案,看哪种适配你的场景:


场景1:找整个列表里所有键值对的最小项

如果你的字典列表是每个字典包含多个键值对(比如下面这种):

dict_list = [
    {"apple": 10, "banana": 5},
    {"orange": 3, "grape": 7},
    {"mango": 12, "peach": 4}
]

你需要先把所有字典的键值对“摊平”成一个大的键值对列表,再用min()函数按value筛选:

写法1(直观版)

all_key_value_pairs = []
for single_dict in dict_list:
    # 把每个字典的键值对拆出来,加入总列表
    all_key_value_pairs.extend(single_dict.items())

# 按元组的第二个元素(也就是value)找最小值
min_pair = min(all_key_value_pairs, key=lambda x: x[1])
print(min_pair)  # 输出: ('orange', 3)

写法2(简洁版,用生成器)

嫌上面代码长?用生成器表达式一步到位:

min_pair = min((pair for d in dict_list for pair in d.items()), key=lambda x: x[1])

场景2:每个字典只有一个键值对(即“单行字典”)

如果你的列表是这种结构(每个元素是单键值对的字典):

dict_list = [{"a": 5}, {"b": 3}, {"c": 7}]

可以直接把每个字典转成键值对元组,再找最小:

# 用next(iter(d.items()))取出单个键值对,再批量处理
min_pair = min((next(iter(d.items())) for d in dict_list), key=lambda x: x[1])
print(min_pair)  # 输出: ('b', 3)

场景3:按指定键找最小对应的键值对

如果你本来就锁定了某个键(比如score),只想找这个键下value最小的那组:

dict_list = [
    {"id": 1, "score": 85},
    {"id": 2, "score": 70},
    {"id": 3, "score": 92}
]

# 先找到包含最小score的整个字典
target_dict = min(dict_list, key=lambda x: x["score"])
# 再提取你要的键值对
min_pair = ("score", target_dict["score"])
print(min_pair)  # 输出: ('score', 70)

要是你还想找这个字典里所有键值对中的最小项,可以再加一步:

min_pair_in_dict = min(target_dict.items(), key=lambda x: x[1])

内容的提问来源于stack exchange,提问作者helloworld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:42:47