python循环通过嵌套字典仅根据关键字获取键

时间:2021-03-30 14:57:53

标签: python

我有一个嵌套字典,我正在尝试找出一种方法来遍历键以仅获取键值。

VAV_SENSOR_NAME_MAP = {

    'ZN-T': {'A' : 'zone', 'B' : 'air', 'C' : 'temp', 'D' : 'sensor'},
    'Space Temperature Local': {'A' : 'zone', 'B' : 'air', 'C' : 'temp', 'D' : 'sensor'},
    
    'ZN-SP': {'A' : 'zone', 'B' : 'air', 'C' : 'temp', 'D' : 'effective', 'E' : 'sp'},
    'Space Temperature Setpoint Active': {'A' : 'zone', 'B' : 'air', 'C' : 'temp', 'D' : 'effective', 'E' : 'sp'},
    
    'DA-T': {'A' : 'discharge', 'B' : 'air', 'C' : 'temp', 'D' : 'sensor'},
    'Discharge Air Temperature': {'A' : 'discharge', 'B' : 'air', 'C' : 'temp', 'D' : 'sensor'},
    
    'SA-F': {'A' : 'air', 'B' : 'flow', 'C' : 'sensor'},
    'Discharge Air Flow': {'A' : 'air', 'B' : 'flow', 'C' : 'sensor'},
    
    'HTG-O': {'A' : 'reheat', 'B' : 'cmd'},
    'Heating Valve Command': {'A' : 'reheat', 'B' : 'cmd'},
    
    'DPR-O': {'A' : 'air', 'B' : 'damper', 'B' : 'cmd'},
    'Actual Air Valve Position': {'A' : 'air', 'B' : 'damper', 'B' : 'cmd'},
    
}

例如,我如何创建函数来仅打印/获取 ZN-T 的键值?希望only只获取zone air temp sensor

的键值

尝试组成一个函数:

def get_all_values(nested_dictionary,key_word):
    #print(key_word)
    for key, value in nested_dictionary.items():
        if type(value) is dict:
            get_all_values(value,key_word)
        else:
            print(value[key_word]) 
            
get_all_values(VAV_SENSOR_NAME_MAP,'ZN-T')

这会给我一个TypeError: string indices must be integers

非常感谢任何提示

1 个答案:

答案 0 :(得分:0)

您可以通过按键选择dict然后对其调用values方法来获取内部dict的值。

VAV_SENSOR_NAME_MAP = {

    'ZN-T': {'A': 'zone', 'B': 'air', 'C': 'temp', 'D': 'sensor'},
    'Space Temperature Local': {'A': 'zone', 'B': 'air', 'C': 'temp', 'D': 'sensor'},

    'ZN-SP': {'A': 'zone', 'B': 'air', 'C': 'temp', 'D': 'effective', 'E': 'sp'},
    'Space Temperature Setpoint Active': {'A': 'zone', 'B': 'air', 'C': 'temp', 'D': 'effective', 'E': 'sp'},

    'DA-T': {'A': 'discharge', 'B': 'air', 'C': 'temp', 'D': 'sensor'},
    'Discharge Air Temperature': {'A': 'discharge', 'B': 'air', 'C': 'temp', 'D': 'sensor'},

    'SA-F': {'A': 'air', 'B': 'flow', 'C': 'sensor'},
    'Discharge Air Flow': {'A': 'air', 'B': 'flow', 'C': 'sensor'},

    'HTG-O': {'A': 'reheat', 'B': 'cmd'},
    'Heating Valve Command': {'A': 'reheat', 'B': 'cmd'},

    'DPR-O': {'A': 'air', 'B': 'damper', 'B': 'cmd'},
    'Actual Air Valve Position': {'A': 'air', 'B': 'damper', 'B': 'cmd'},

}

print(list(VAV_SENSOR_NAME_MAP['ZN-T'].values()))

输出

['zone', 'air', 'temp', 'sensor']