给定一个列表字典
node_to_index = {"global": [0],
                  "l_eye": list(range(42, 48)),
                  "r_eye": list(range(36, 42)),
                  "l_brow": list(range(22, 27)),
                  "r_brow": list(range(17, 22)),
                  "mouth": list(range(48, 68)),
                  "nose": list(range(27, 35)),
                 }
Run Code Online (Sandbox Code Playgroud)
给定一个数字,例如 37,它将返回“r_eye”键的索引,即 2
我会使用生成器表达式和enumerate,next条件满足后立即使用快捷方式:
next((ix for ix, (_,v) in enumerate(node_to_index.items()) if 37 in v), None)
# 2
Run Code Online (Sandbox Code Playgroud)
请注意,对于 3.7 以下的 python 版本,不保留字典的插入顺序。所以你应该考虑使用collections.OrderedDict:
from collections import OrderedDict
node_to_index = OrderedDict({
    "global": [0],
    "l_eye": list(range(42, 48)),
    "r_eye": list(range(36, 42)),
    "l_brow": list(range(22, 27)),
    "r_brow": list(range(17, 22)),
    "mouth": list(range(48, 68)),
    "nose": list(range(27, 35)),
})
next((ix for ix, (_,v) in enumerate(node_to_index.items()) if 37 in v), None)
# 2
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           62 次  |  
        
|   最近记录:  |