【问题标题】:python loop thru nested dictionary obtain keys only based on keywordpython循环通过嵌套字典仅基于关键字获取键
【发布时间】:2021-03-30 14:57:53
【问题描述】:

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

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 的键值?希望只获取zoneairtempsensor的键值

试图组成一个函数:

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

非常感谢任何提示

【问题讨论】:

  • 只能获取列表中的值,例如list(VAV_SENSOR_NAME_MAP['ZN-T'].values())
  • 哇,如果您发帖并回答,那很容易,请点击绿色复选框谢谢!

标签: python


【解决方案1】:

你可以通过按键选择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']

【讨论】:

    猜你喜欢
    • 2021-05-10
    • 2020-05-14
    • 2022-10-16
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 2014-03-30
    • 2016-10-16
    相关资源
    最近更新 更多