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

能否按值对字典排序后打印,值相同时按键字母顺序排序?

按值排序字典,值相同时按键字母顺序排序的解决方案

你的代码仅对字典的键做了字母排序,完全没考虑值的排序逻辑,所以无法满足需求。要实现按值排序、值相等时按键排序的效果,需要对字典的items()进行排序,并指定合适的排序规则。

核心思路

使用sorted()函数处理字典的items()(返回(键, 值)对),通过key参数定义排序优先级:

  1. 优先按值排序(如果值是列表,可转为字符串或直接用列表比较,两者排序逻辑一致)
  2. 当值相同时,按键的字母顺序排序

示例代码

假设你的字典结构如下(值为列表类型):

dictionary = {
    "banana": ["yellow", "fruit"],
    "apple": ["red", "fruit"],
    "cherry": ["red", "fruit"],
    "date": ["brown", "fruit"]
}

实现需求的代码:

# 按值(转为字符串)排序,值相同则按键的字母顺序排序
for key, value in sorted(dictionary.items(), key=lambda item: (", ".join(item[1]), item[0])):
    values_str = ", ".join(value)
    print(f"{key} {values_str}")

运行结果

apple red, fruit
cherry red, fruit
date brown, fruit
banana yellow, fruit

代码说明

  • sorted(dictionary.items(), key=lambda item: (", ".join(item[1]), item[0])):
    • ", ".join(item[1])将列表类型的值转为字符串,作为第一排序依据
    • item[0]是字典的键,作为第二排序依据,当值相同时,按键的字母顺序排序
  • 若想直接用列表作为值的排序依据(列表会按元素逐个比较),可将key改为lambda item: (item[1], item[0]),效果与转字符串一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:21:37