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

如何对foo、bar中的单值字典按值排序(不排序foo、bar本身)

解决方案

没问题,这个需求实现起来超简单~先我先猜下你的数据结构大概是这样的(要是和实际有出入随时说哈):

original_data = {
    'foo': [{'apple': 3}, {'banana': 1}, {'cherry': 2}],
    'bar': [{'dog': 5}, {'cat': 4}, {'elephant': 6}]
}

核心需求很明确:保持外层的'foo'和'bar'键的顺序完全不变,只对它们各自对应的列表里的单值字典,按照字典里的值进行排序。下面直接上实现方法:

具体代码实现

# 初始化处理后的字典
processed_data = {}

# 遍历原字典的键值对,Python 3.7+ 默认保留字典插入顺序
for key, item_list in original_data.items():
    # 对列表中的单值字典按值排序
    sorted_list = sorted(item_list, key=lambda single_dict: next(iter(single_dict.values())))
    processed_data[key] = sorted_list

# 查看结果
print(processed_data)

关键代码解释

  • next(iter(single_dict.values())):因为每个元素都是单值字典,这个写法能快速取出字典里的唯一值(完全不用关心键是什么),非常适合你的场景。
  • 如果需要降序排序,只需要给sorted()加个reverse=True参数就行:
    sorted_list = sorted(item_list, key=lambda single_dict: next(iter(single_dict.values())), reverse=True)
    

运行结果验证

执行代码后,输出会是这样的:

{
    'foo': [{'banana': 1}, {'cherry': 2}, {'apple': 3}],
    'bar': [{'cat': 4}, {'dog': 5}, {'elephant': 6}]
}

你看,'foo'和'bar'的顺序和原来一模一样,各自列表里的字典都按值排好序了~

要是你的实际数据结构和我假设的不一样(比如外层是列表而非字典?),可以补充具体结构,我再帮你调整方案~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:59:06