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

Python如何实现将字典的键替换为对应值列表的长度

字典键与值列表长度匹配实现方案

问题说明

现有原始字典结构如下:

{
    1: ['A', 'B', 'C', 'D', 'E'],
    2: ['B', 'C', 'E', 'AD'],
    3: ['E', 'AD', 'BC'],
    4: ['BC', 'EAD'],
    5: ['BCEAD']
}

需求为调整字典键值映射关系,让每个键的数值等于对应值列表的长度,最终得到目标结构如下:

{
    5: ['A', 'B', 'C', 'D', 'E'],
    4: ['B', 'C', 'E', 'AD'],
    3: ['E', 'AD', 'BC'],
    2: ['BC', 'EAD'],
    1: ['BCEAD']
}

实现逻辑

观察原始数据特征:所有值列表的长度为1-5的不重复整数,不需要修改列表内的元素,只需要重新建立键值映射:遍历原始字典的所有值列表,以列表的实际长度作为新字典的键,列表本身作为对应值即可。

基础循环实现

可读性更强,适合新手理解:

# 定义原始字典
origin = {1:['A', 'B', 'C', 'D', 'E'] , 2:['B', 'C', 'E', 'AD'] , 3:['E', 'AD', 'BC'] , 4:['BC', 'EAD'] , 5:['BCEAD']}
target = {}

for val_list in origin.values():
    # 取列表实际长度作为新键
    new_key = len(val_list)
    target[new_key] = val_list

字典推导式简洁实现

代码更精简,适合熟练场景使用:

origin = {1:['A', 'B', 'C', 'D', 'E'] , 2:['B', 'C', 'E', 'AD'] , 3:['E', 'AD', 'BC'] , 4:['BC', 'EAD'] , 5:['BCEAD']}
target = {len(val_list): val_list for val_list in origin.values()}

运行上述任意一段代码,得到的target字典结构和预期完全一致。该方案不依赖原始字典的键顺序、也不需要硬编码键值,后续如果新增其他长度的值列表,也能自动完成映射。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:36:07