简体   繁体   English

Python 如何从嵌套字典中提取数据

[英]Python How to Extract data from Nested Dict

I have output from python networkX code:我有 python networkX 代码的输出:

flow_value, flow_dict = nx.maximum_flow(T, 'O', 'T')

print(flow_dict)

#Output as followesenter

#{'O': {'A': 4, 'B': 6, 'C': 4}, 'A': {'B': 1, 'D': 3}, 'B': {'C': 0, 'E': 3,'D': 4}, 'C': {'E': 4}, 'E': {'D': 1, 'T': 6}, 'D': {'T': 8}, 'T': {}}

I want to extract all the data in the form looks like:我想提取表格中的所有数据,如下所示:

#('O','A',4),('O','B','6'),('O','C','4'),('A','B',1),......,('D','T',8)

Any ways can I traverse thru the nested dict and get the data I need?有什么方法可以遍历嵌套的字典并获取我需要的数据?

I tried this and it works.我试过这个,它的工作原理。 Some type checking to only capture strings某些类型检查仅捕获字符串

def retrieve_all_strings_from_dict(nested_dict, keys_to_ignore = None):

    values = []

    if not keys_to_ignore:
        keys_to_ignore = []
    else: keys_to_ignore = to_list(keys_to_ignore)    

    if not isinstance(nested_dict,dict):
        return values

    dict_stack = []
    dict_stack.append(nested_dict)

    for dict_var in dict_stack:        
        data_list = [v for k,v in dict_var.items() if all([isinstance(v,str), k not in keys_to_ignore]) ]        
        additional_dicts = [v for k,v in dict_var.items() if isinstance(v,dict)]                    

        for x in additional_dicts:
            dict_stack.append(x)

        for w in data_list:
            values.append(w) 

    return values           

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM