python - 将嵌套列表转换为字典

标签 python

你好,我试着用下面的嵌套列表制作字典,但我得到了一个 TypeError。请帮助我修复它以获得所需的输出,如下所示。谢谢

n1 = [[1,2],[3,4]]
n2 = [[(5,7),(10,22)],[(6,4),(8,11)]]

output = {1:(5,7), 2:(10,22), 3:(6,4), 4:(8,11)}

D1 = {}
for key, value in zip(n1,n2):
    D1[key] = value
print D1 

TypeError: unhashable type: 'list'

最佳答案

你的方法没有用,因为当你压缩n1n2时,结果会是这样的

for key, value in zip(n1,n2):
    print key, value
# [1, 2] [(5, 7), (10, 22)]
# [3, 4] [(6, 4), (8, 11)]

所以,key 是一个列表。但是,它不可散列。所以它不能用作字典的实际键。

您可以链接嵌套列表以使它们变平,然后您可以使用izip将它们zip

from itertools import chain, izip
print dict(izip(chain.from_iterable(n1), chain.from_iterable(n2)))
# {1: (5, 7), 2: (10, 22), 3: (6, 4), 4: (8, 11)}

这种方法的美妙之处在于,它将非常节省内存,因为它不会创建任何中间列表。因此,即使实际列表非常大,也可以使用它。

关于python - 将嵌套列表转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22759103/

相关文章:

python - 优化包括多个 np.multipy 语句的代码片段

python - 是否有任何二次规划函数可以同时具有下限和上限 - Python

python - 解释 scikit 中的数据集

python - Airflow UI 无法找到提供者模块

python - "Pythonic"只要基于前一个元素的条件为真,就可以从可迭代对象中返回元素

python - 捕获 List : tag 之后的用户名

python - 有条件地用两个列表替换项目

python - 仅检查 OpenCV 中视频源的特定部分

python - 唤醒休眠线程的最佳方式?

python - 定义不同的 pandas xlsxwriter 边框类型