我是Python新手。我想从嵌套字典中提取多个列表。我确实按照这个链接(Get nested arrays out of a dictionary)对我没什么帮助。
如果我有字典,请说:
{"alpha": {2: {1: 1.1, 2: 4.1}, 3: {1: 9.1, 3: 4.1, 6: 5.1},
5: {1: 9.2, 3: 4.4, 6: 5.4}, 9: {1: 9.0, 3: 4.0, 6: 5.5}},
"beta": {2: {1: 4.0, 2: 7.9}, 3: {1: 24, 3: 89, 6: 98} ,
5: {1: 9, 3: 4, 6: 5}, 9: {1: 9.2, 3: 4.9, 6: 5.0}}}
如何将所有这些提取为单个列表(alpha,beta,..), (2,3,5,9), (1,2,4,9), (1.1,4.1)
等。
当我尝试时,我只能得到(alpha,beta,..)列表以及与alpha和beta相关的值列表。值列表再次是字典,因为它在列表中。我不能再做dict.values(),因为之前的操作给了我一个列表。因此,Python会抛出错误。如何单独列出所有这些值和键?就像我想要制作一个小数列表和与之相关的键。
答案 0 :(得分:1)
你可以获得每一层'访问dict.keys()
或访问dict.values()
获取下面的图层。如果你想深入一级,你只需迭代parent.values()
并在每个元素上获得dict.keys()
。最后一层最后只是dict.values()
。
print data.keys() # top level keys
>>> ['alpha', 'beta']
print [x.keys() for x in data.values()] # second level keys
>>> [[9, 2, 3, 5], [9, 2, 3, 5]]
print [y.keys() for x in data.values() for y in x.values()] # third level keys
>>> [[1, 3, 6], [1, 2], [1, 3, 6], [1, 3, 6], [1, 3, 6], [1, 2], [1, 3, 6], [1, 3, 6]]
print [y.values() for x in data.values() for y in x.values()] # third level values
>>> [[9.0, 4.0, 5.5], [1.1, 4.1], [9.1, 4.1, 5.1], [9.2, 4.4, 5.4], [9.2, 4.9, 5.0], [4.0, 7.9], [24, 89, 98], [9, 4, 5]]
请注意,dicts本质上是无序的。
答案 1 :(得分:0)
你可以将dict.keys的结果转换成一个列表并赋值给一个列表 new_list = list(dict.keys)