我有一个嵌套字典,我正在尝试找出一种方法来遍历键以仅获取键值。
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
非常感谢任何提示
答案 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']