Python:创建一个新的字典,从嵌套列表的字典中获取值

时间:2017-04-28 10:51:50

标签: python python-2.7 dictionary

我是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

非常感谢帮助。提前谢谢!

1 个答案:

答案 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