Skip to main content
 首页 » 编程设计

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

2025年05月04日10telwanggs

你好,我试着用下面的嵌套列表制作字典,但我得到了一个 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' 

请您参考如下方法:

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

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)} 

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