从嵌套字典中提取多个列表

时间:2016-10-12 13:15:31

标签: python list dictionary

我是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会抛出错误。如何单独列出所有这些值和键?就像我想要制作一个小数列表和与之相关的键。

2 个答案:

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