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

Python中如何将嵌套列表的唯一值替换为对应索引值?

把嵌套列表中的唯一值替换为对应索引的方法

这问题我之前处理嵌套数据的时候也遇到过,核心思路其实很清晰:先把你的unique_sample转成值到索引的映射字典,然后遍历嵌套列表的每一层元素,用字典快速查找对应的索引就行。下面分两种场景给你具体实现方案:

场景1:嵌套层级固定(比如只有两层列表)

如果你的样本嵌套列表只有固定的两层(比如外层是列表,内层也是列表,没有更深的嵌套),用嵌套列表推导式就能快速搞定,代码简洁又高效:

# 假设你的唯一值列表和样本数据是这样的
unique_sample = ['apple', 'banana', 'cherry', 'date']
sample_nested = [['apple', 'banana'], ['cherry', 'apple'], ['date', 'banana', 'cherry']]

# 第一步:创建值到索引的映射字典,用enumerate更直观
value_to_index = {val: idx for idx, val in enumerate(unique_sample)}

# 第二步:遍历嵌套列表,替换每个元素为对应索引
result = [[value_to_index[item] for item in sublist] for sublist in sample_nested]

print(result)
# 输出结果:[[0, 1], [2, 0], [3, 1, 2]]

场景2:嵌套层级不固定(存在多层嵌套)

如果你的列表嵌套深度不确定(比如里面还有子列表的子列表),那写个递归函数会更稳妥,能自动处理任意层级的嵌套:

def replace_nested_with_index(nested_list, value_map):
    processed_list = []
    for element in nested_list:
        if isinstance(element, list):
            # 如果当前元素是列表,递归处理它
            processed_list.append(replace_nested_with_index(element, value_map))
        else:
            # 如果是单个元素,直接查映射字典替换
            processed_list.append(value_map[element])
    return processed_list

# 测试多层嵌套的情况
deep_nested_sample = [['apple', ['banana', 'cherry']], 'date', [['apple'], 'cherry']]
deep_result = replace_nested_with_index(deep_nested_sample, value_to_index)

print(deep_result)
# 输出结果:[[0, [1, 2]], 3, [[0], 2]]

额外注意点:处理不存在的元素

如果你的样本列表里可能存在unique_sample中没有的值,直接用value_to_index[item]会抛出KeyError。这时候可以用字典的get()方法设置默认值,比如把不存在的元素替换为-1:

# 修改列表推导式的写法
safe_result = [[value_to_index.get(item, -1) for item in sublist] for sublist in sample_nested]

# 递归函数里也可以同理修改
def safe_replace_nested(nested_list, value_map):
    processed = []
    for elem in nested_list:
        if isinstance(elem, list):
            processed.append(safe_replace_nested(elem, value_map))
        else:
            processed.append(value_map.get(elem, -1))
    return processed

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:16:01