1

我想从嵌套字典中获取值列表。

d = {2.5: {2005: 0.3}, 2.6: {2005: 0.4}, 5.5: {2010: 0.8}, 7.5: {2010: 0.95}}

def get_values_from_nested_dict(dic):
    list_of_values = dic.values()
    l = []
    for i in list_of_values:
        a = i.values()
        l.append(a)
    return l

d1 = get_values_from_nested_dict(d)
print(d1)

我的结果:

[dict_values([0.3]), dict_values([0.4]), dict_values([0.8]), dict_values([0.95])]

但我希望列表是:

[0.3,0.4,0.8,0.95]
4

3 回答 3

2

dict您可以简单地对s 的值使用双重理解(相当于嵌套循环) :

d = {2.5: {2005: 0.3}, 2.6: {2005: 0.4}, 5.5: {2010: 0.8}, 7.5: {2010: 0.95}}


[y for x in d.values() for y in x.values()]
# [0.3, 0.4, 0.8, 0.95]
于 2019-10-30T23:26:30.780 回答
1

您需要再次遍历内部字典的值并将它们中的每一个附加到输出变量。

def get_values_from_nested_dict(dic):
    l = []
    for outer_value in dic.values():
        for value in outer_value.values():
            l.append(value)
    return l
于 2019-10-30T23:24:01.450 回答
0

你可以这样做,

In [97]: d                                                                                                                                                                                                  
Out[97]: {2.5: {2005: 0.3}, 2.6: {2005: 0.4}, 5.5: {2010: 0.8}, 7.5: {2010: 0.95}}

In [98]: list(map(lambda x:list(x.values())[0], d.values()))                                                                                                                                                
Out[98]: [0.3, 0.4, 0.8, 0.95]
于 2019-10-31T06:42:28.567 回答