我是Python的新手,也是一般的编程,我在为代码找到正确的语法方面遇到了一些困难。
我有两个清单:
I = [0, 1]
A = ['a', 'b']
假设有一个像这样的字典:
my_dictionary = {(0, 'a'): [[0, 4, 0, 0, 3, 0, 0], [4, 0, 0, 3, 0, 0, 0]], (0, 'b'): [[2, 0, 2, 0, 2, 1, 0], [2, 0, 2, 1, 0, 2, 0]], (1, 'a'): [[0, 0, 0, 7, 0, 0, 0], [0, 0, 0, 0, 0, 7, 0], [0, 0, 7, 0, 0, 0, 0]], (1, 'b'): [[2, 0, 2, 0, 2, 1, 0], [2, 0, 2, 1, 0, 2, 0]]}
我想创建一个这样的新词典:new_dictionary = {(0,' a',0,0):0,(0,' a',0,1 ):4,....(1,' b',0,0):2,.....}
new_dictionary = dict()
for i in I:
for j in A:
for c in my_dictionary[i, j]:
for d in c:
new_dictionary.update(map((i, j, c, d), my_dictionary[i, j][c][d]))
这会让我TypeError: list indices must be integers, not list
非常感谢帮助。提前谢谢!
答案 0 :(得分:1)
这里的问题是,您使用列表c
作为my_dictionary[i, j]
的索引,my_dictionary[i, j]
将返回列表索引列表,应始终为整数列表。
让我解释一下你如何登陆这里
for i in I
将返回I
列表中0 and 1
for j in A
将返回A
列表中'a' and 'b'
for c in my_dictionary[i, j]
将返回与my_dictionary[i, j]
相对应的列表列表中的元素,例如my_dictionary[0, 'a']
,它将返回[0, 4, 0, 0, 3, 0, 0] and [4, 0, 0, 3, 0, 0, 0]
,因此c
将被分配一个列表,以便您在此处写{ {1}}这将返回错误my_dictionary[i, j][c]
,因为c是一个列表,此处不能用于索引列表TypeError: list indices must be integers, not list