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

如何基于第一个字典的值对两个同键字典进行排序?

同步排序两个键完全相同的字典(基于其中一个的计数值)

嘿,这个问题其实很好搞定!核心思路就是先把两个字典的共同键提取出来,按第一个字典的计数值排序,再用这个排序后的键列表重新构建两个字典,这样就能实现同步排序了。我用Python给你演示具体操作,完全贴合你的需求:

第一步:先把你的示例整理成可运行的字典

我补全了第一个字典里8对应的计数值(应该是5对吧?):

# 存储计数值的字典
count_dict = {0: 0, 10: 1, 17: 2, 3: 3, 28: 4, 8: 5}
# 存储实际值的查找表字典
value_dict = {0: "0", 10: "String1", 17: "String2", 3: "String3", 28: "String4", 8: "String5"}

第二步:获取排序后的键列表

根据你的预期输出,我们需要把键按count_dict的原始值从大到小排序,同时保留0在第一位:

# 先单独保留0,剩下的键按count_dict的值降序排序
sorted_keys = [0] + sorted([k for k in count_dict if k != 0], key=lambda x: count_dict[x], reverse=True)
# 这里如果需要其他排序逻辑,比如升序,去掉reverse=True就行

第三步:构建同步排序后的两个字典

第一个字典:给排序后的键重新分配连续计数值

按照你的预期,第一个字典的新值是排序后的位置索引(从0开始):

sorted_count_dict = {key: idx for idx, key in enumerate(sorted_keys)}

第二个字典:按排序后的键顺序保留原始值

直接用排序后的键列表从原查找表取值即可:

sorted_value_dict = {key: value_dict[key] for key in sorted_keys}

看看结果!

运行上面的代码后,你会得到完全符合预期的输出:

  • 排序后的计数字典:{0: 0, 28: 1, 17: 2, 10: 3, 8: 4, 3: 5}
  • 排序后的查找表字典:{0: "0", 28: "String4", 17: "String2", 10: "String1", 8: "String5", 3: "String3"}

核心逻辑总结

不管你需要升序还是降序排序,只要调整sorted()函数里的reverse参数就行,整个流程的关键就是基于第一个字典的值得到排序后的键列表,再用这个列表同步重构两个字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:41:37