Siri Shortcuts使用问题:如何获取字典中选中值对应的key
字典选中条目key反查实现方案
你用到的初始JSON字典如下:{"key_0":"myValue_0","key_1":"myValue_1"}
字典展示效果如下:
结合你能获取到的三个资源(选中条目的value、全量key列表、全量value列表),可以通过以下两种方案实现需求:
方案1:索引匹配法(适合单次查询、value唯一的场景)
全量key列表和全量value列表的顺序是严格一一对应的(Python3.7+、JavaScript等主流语言的字典/对象实现均保留插入顺序),你只需要先查到选中value在全量value列表中的索引,再用该索引去全量key列表中取对应元素即可。
示例代码(Python):
# 你可获取的三个入参 selected_value = "myValue_1" all_keys = ["key_0", "key_1"] all_values = ["myValue_0", "myValue_1"] # 执行查询 target_index = all_values.index(selected_value) target_key = all_keys[target_index]
示例代码(JavaScript):
// 你可获取的三个入参 const selectedValue = "myValue_1" const allKeys = ["key_0", "key_1"] const allValues = ["myValue_0", "myValue_1"] // 执行查询 const targetIndex = allValues.indexOf(selectedValue) const targetKey = allKeys[targetIndex]
方案2:预构建反向映射字典(适合多次查询、需要提升查询效率的场景)
你可以提前用全量key和全量value生成一个值到key的反向映射字典,后续查询直接调用即可,无需每次遍历索引。
示例代码(Python):
all_keys = ["key_0", "key_1"] all_values = ["myValue_0", "myValue_1"] # 预构建反向映射 value_key_map = dict(zip(all_values, all_keys)) # 后续查询直接调用 selected_value = "myValue_0" target_key = value_key_map[selected_value]
注意事项
- 如果你的业务场景中存在value重复的情况,上述方案默认返回第一个匹配到的key,你需要额外结合UI选中的位置等业务信息做进一步判断。
- 确认你使用的编程语言的字典实现保留插入顺序,且返回的全量key、全量value列表顺序对应,目前主流编程语言的标准字典实现均满足该要求。
内容的提问来源于stack exchange,提问作者Trombone0904
相关产品推荐
相关产品推荐

