如何从首元素为索引的二维数组中按dt_name值查询对应索引
实现方案
以下为Python语言的实现方式,适配不同使用场景:
1. 单次匹配场景
如果仅需偶尔查询指定dt_name对应的数值,直接遍历数组,找到匹配项后立即返回即可,避免不必要的性能消耗:
def query_id(dt_arr, target_name): for id_val, info_dict in dt_arr: if info_dict.get("dt_name") == target_name: return id_val # 无匹配时可自定义返回值,例如返回-1或None return None # 调用测试 target_arr = [[0, {'dt_name': 'Go'}], [1, {'dt_name': 'Stop'}]] print(query_id(target_arr, "Go")) # 输出 0 print(query_id(target_arr, "Stop")) # 输出 1
2. 高频查询场景
如果需要多次查询不同的dt_name对应值,可以提前构建映射字典,后续查询时间复杂度为O(1),性能更高:
target_arr = [[0, {'dt_name': 'Go'}], [1, {'dt_name': 'Stop'}]] # 预构建映射关系 name_id_map = {item[1]["dt_name"]: item[0] for item in target_arr} # 直接查询使用 print(name_id_map["Go"]) # 输出 0 print(name_id_map["Stop"]) # 输出 1
提示:如果数组中存在多个相同
dt_name的元素,遍历方法会返回第一个匹配的数值,字典构建方法会保留最后一个匹配的数值,可根据业务需求调整逻辑。
内容的提问来源于stack exchange,提问作者caasswa
相关产品推荐
相关产品推荐

