Получить значение из вложенного словаря. Python - PullRequest
1 голос
/ 31 октября 2019

Я хочу получить список значений из вложенного словаря.

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]

Ответы [ 3 ]

2 голосов
/ 31 октября 2019

Вы можете просто использовать двойное понимание (эквивалентно вложенному циклу) для значений 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]
1 голос
/ 31 октября 2019

Вам нужно снова пройтись по значениям внутреннего словаря и добавить каждое из них к выходной переменной.

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
0 голосов
/ 31 октября 2019

Вы можете сделать это,

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...