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

Python中将二维列表作为键、一维列表作为值生成字典求解

双列表配对为字典的解决方案

失败原因

你直接使用zip配对失败的核心原因是:Python 字典的键必须是可哈希的不可变类型,而list1中的元素是可变的列表对象,无法直接作为字典的键,运行时会抛出TypeError: unhashable type: 'list'错误。
同时你给出的期望输出格式不符合Python语法规范,不存在以列表为键的字典类型。

可行实现方案

方案1:将子列表转为元组作为键(最常用)

元组是不可变可哈希类型,完全可以满足索引需求,取值时只需将查询目标也转为元组即可:

list1 = [[0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 1, 0, 1, 0], [0, 0, 0, 0, 1, 1, 0, 0]]
list2 = [0, 1, 1, 2]

dict_output = {tuple(k): v for k, v in zip(list1, list2)}
print(dict_output)

输出结果:

{(0, 0, 0, 0, 0, 1, 0, 0): 0, (0, 0, 0, 0, 1, 0, 1, 1): 1, (0, 0, 0, 0, 1, 0, 1, 0): 1, (0, 0, 0, 0, 1, 1, 0, 0): 2}

取值示例:

# 查询对应列表的数值
target = [0, 0, 0, 0, 0, 1, 0, 0]
print(dict_output[tuple(target)]) # 输出 0

方案2:成对存储为元组列表(保留原列表结构)

如果你不需要通过键快速索引,只需要保留两个列表的配对关系,可以直接生成配对列表:

pair_list = list(zip(list1, list2))
print(pair_list)

输出结果:

[([0, 0, 0, 0, 0, 1, 0, 0], 0), ([0, 0, 0, 0, 1, 0, 1, 1], 1), ([0, 0, 0, 0, 1, 0, 1, 0], 1), ([0, 0, 0, 0, 1, 1, 0, 0], 2)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:54:03