你好,我试着用下面的嵌套列表制作字典,但我得到了一个 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)}
这种方法的美妙之处在于,它将非常节省内存,因为它不会创建任何中间列表。因此,即使实际列表非常大,也可以使用它。
关于python - 将嵌套列表转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22759103/