首页 > 解决方案 > 从 Python 上的嵌套字典中提取所有信息

问题描述

我正在学习 Python 上的嵌套字典。我想知道如何从嵌套字典中提取特定信息。我的数据如下:

data = {
    "1": {'area': 'Administration', 'expenditure': '315'},
    "2": {'area': 'Administration', 'expenditure': '120'},
    "3": {'area': None, 'expenditure': '314'},
    "4": {'area': 'Aids and appliances', 'expenditure': None},
    "5": {'area': 'Aids and appliances', 'expenditure': '12'},
    "6": {'area': 'Administration', 'expenditure': '110'},
    "7": {'area': 'Administration', 'expenditure': '300'},
}

如何提取每个领域的所有支出信息?任何帮助表示赞赏。

标签: pythonpython-3.xdictionary

解决方案


我想你想要一个特定expenditurespecific areas. 如果您想要所有区域,那么只需从我的代码中删除一个条件,否则您可以参考所有其他答案。我根据用户输入任何区域名称来执行此操作,他会得到expenditures那个特定的area.

    def findExpense(data):
        a = input("Enter area to find expenditure : ")
        ex_dict = {}
        # create expenditure list as values to ex_dict
        ex_dict[a] = []
        for _,vals in data.items():
            if vals['area'] == a:
                ex_dict[a].append(vals['expenditure'])
        return ex_dict

    print(findExpense({
        "1": {'area': 'Administration', 'expenditure': '315'},
        "2": {'area': 'Administration', 'expenditure': '120'},
        "3": {'area': None, 'expenditure': '314'},
        "4": {'area': 'Aids and appliances', 'expenditure': None},
        "5": {'area': 'Aids and appliances', 'expenditure': '12'},
        "6": {'area': 'Administration', 'expenditure': '110'},
        "7": {'area': 'Administration', 'expenditure': '300'}
    }))

如果您熟悉,list comprehension则可以将for循环替换为以下代码。

    ex_dict[a] = [vals['expenditure'] for _, vals in data.items() if vals['area'] == a]
    return ex_dict

推荐阅读