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

如何对字典中列表内的元组进行内部元素排序?

问题描述

我有一个字典,其值为元组组成的列表(列表长度不固定),每个元组包含两个数字。示例字典如下:

f = {'diff0': [(7, 4), (4, 8), (8, 7)], 'diff1': [(3, 1), (3, 2), (3, 11)]}

需要对每个元组内部的数字进行排序,同时保持元组在列表中的顺序不变,预期得到结果:

f = {'diff0': [(4, 7), (4, 8), (7, 8)], 'diff1': [(1, 3), (2, 3), (3, 11)]}

此前我在非字典场景下处理过类似问题,当时使用的代码如下(用于对列表内的元组逐个排序):

for s in range(len(diffA0)):
    diffA0[s] = tuple(sorted(diffA0[s]))

这段代码可将diffA0: [(7, 9), (7, 4), (7, 6), (7, 8)]转换为diffA0: [(7, 9), (4, 7), (6, 7), (7, 8)]。

解决方案

基于你之前处理列表的思路,只需遍历字典的每个值(即元组列表),再对列表内的每个元组执行排序操作即可,以下是两种实现方式:

方式一:原地修改原字典

直接遍历字典的键,对每个键对应的元组列表进行修改:

for key in f:
    for idx in range(len(f[key])):
        f[key][idx] = tuple(sorted(f[key][idx]))

方式二:创建新字典(不改动原字典)

如果需要保留原字典,可以生成一个新字典,这里提供两种写法:

常规循环写法

new_f = {}
for key, tuples_list in f.items():
    sorted_list = [tuple(sorted(t)) for t in tuples_list]
    new_f[key] = sorted_list

字典推导式写法(更简洁)

new_f = {key: [tuple(sorted(t)) for t in tuples_list] for key, tuples_list in f.items()}

以上方法都能实现需求,字典推导式写法更简洁高效,适用于Python 3及以上版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:00:59