首页 > 编程问答 >按值搜索 JSON

按值搜索 JSON

时间:2024-07-22 09:00:27浏览次数:9  
标签:python json

我正在尝试使用 Python 按其值而不是其变量来搜索 json。
基本上:我想在 .a json 文件中搜索字符串/第二个值并返回第一个值
我正在制作一个速记游戏,我试图这样做,以便我可以按单词搜索笔划。

例如:

“TKPWRAOEUPBD”:“grind”

我搜索“grind”,它返回“TKPWRAOEUPBD”。或者我搜索另一个单词,比如说“你好”,它会返回正确的值,对于我的个人字典来说,这将是“H-L”。

我已经尝试过这个:

import json

x = open("main.json")
y = x.read()

z = json.loads(y)

print(z["VALUE HERE"])

但它只允许我做原始的笔画,而不是任何文字。


走在正确的轨道上!只是需要反转如何访问 json 数据。目前,正在使用一个键来获取其值。需要做的是遍历所有键值对并检查的查询是否与当前值匹配。如果匹配,则返回该键。

以下是如何执行此操作的方法:

import json

def find_key_by_value(data, target_value):
  """在 JSON 数据中搜索某个值并返回其键。

  Args:
    data: Python 字典(从 JSON 字符串加载)。
    target_value: 要搜索的值。

  Returns:
    与该值关联的键,如果找到该值。如果未找到该值,则返回 None。
  """
  for key, value in data.items():
    if value == target_value:
      return key
  return None

# 从文件加载 JSON 数据
with open("main.json", 'r') as f:
  z = json.load(f)

# 搜索单词“grind”
search_word = "grind"
found_key = find_key_by_value(z, search_word)

if found_key:
  print(f"与 '{search_word}' 对应的键是:{found_key}")
else:
  print(f"在 JSON 数据中找不到 '{search_word}'。") 

这段代码首先定义了一个名为 find_key_by_value 的函数,该函数接受 JSON 数据和要搜索的目标值。它遍历数据中的所有键值对,如果找到匹配的值,则返回相应的键。

然后,该代码打开的 JSON 文件,将其加载到名为 z 的字典中,并定义要搜索的 search_word 。然后,它调用 find_key_by_value 函数,并将结果存储在 found_key 中。最后,它会打印出找到的键或一条消息,指出该值是否在数据中。

此代码假设的 JSON 文件的结构是单词作为值,速记符号作为键。

标签:python,json
From: 78776519

相关文章

  • Python - for循环不使用正则表达式附加数组
    以下代码从URL获取版本号,然后对于每个版本号,转到该版本号的页面并使用文件名的特定模式填充数组。生成的数组应包含每个版本号的文件名列表,但它似乎只包含早期版本(2.6)。使用print语句,我可以看到代码的工作原理是它获取sha256sums.asc文件-所有这些文件,所有版本。我猜......
  • 使用 callable_iterator (re.finditer) 导致 Python 冻结
    我有一个为文本的每一行调用的函数。deftokenize_line(line:str,cmd=''):matches=re.finditer(Patterns.SUPPORTED_TOKENS,line)tokens_found,not_found,start_idx=[],[],0print(matches)formatchinmatches:pass#Rest......
  • Python 的 time.sleep - 永远不会醒来
    我认为这将是那些简单的问题之一,但它让我感到困惑。[停止媒体:我是对的。找到了解决方案。查看答案。]我正在使用Python的单元测试框架来测试多线程应用程序。很好而且很直接-我有5个左右的工作线程监视一个公共队列,以及一个为它们制作工作项的生产者线程......
  • python中使用mitmproxy的http模块出错
    我有一个使用mitmproxyhttp函数的代码,它在这里惨败:defmain(stdscr):try:parser=argparse.ArgumentParser(description='NetSourNetworkAnalyzer')parser.add_argument('--proxy',action='store_true',help='EnableH......
  • 使用python图像去噪没有获得所需的重建图像
    我是python机器学习的初学者,我正在编写一个程序,使图像变得嘈杂,然后我的程序输出重建的图像。我正在使用加性高斯白噪声并使用前馈神经网络。我的程序显示真实图像、噪声图像和重建图像。这些是我通常得到的结果。有人知道如何解决这样的问题吗?这是我的代码:ap......
  • 使用 pip 22.3.1 和 python 3.11.0 安装 MetaTrader5 错误
    我正在尝试使用pip在Windows上安装MetaTrader5。python--versionPython3.11.0pip--versionpip22.3.1pipinstallMetaTrader5ERROR:CouldnotfindaversionthatsatisfiestherequirementMetaTrader5(fromversions:none)ERROR:Nomatchingdistribu......
  • 在 Python 中溶解线条
    我有一个包含多行的形状文件。我正在寻找一种方法来消除所有的接触线。这在ArcMap中是可能的,但似乎在Python和QGIS中都无法做到:之前:所需的输出:这需要在多行上完成,因此像QGIS合并一样手动执行不是一个选项。在ArcMap中,我曾经使用“溶解”......
  • 一个简单的问题(python、串行通信和arduinos)
    只是一个关于小脚本的快速问题,由于某种原因无法工作我运行了这个脚本:importserialimporttimeimportturtledefserialreading():serialPort=serial.Serial(port="COM5",baudrate=9600,bytesize=8,timeout=2,stopbits=serial.STOPBITS_ONE......
  • 我在 Windows 10 上运行 Python 代码后控制台立​​即关闭
    虽然我在代码末尾使用input(),但在Windows10(IDLE之外)的窗口中输入名称后,控制台仍然立即关闭,并且我看不到结果。我该怎么做才能阻止控制台关闭?#!python3name=input('Enteryourname:')print('Hello'+name)input('pressEntertoexit:')你在代码末尾......
  • 具有未定义嵌套列表深度的嵌套列表的Python注释类型
    [[1,2,3],3,[2,4],5]的类型是list[list[int]|int]但是,如果嵌套列表具有未定义的深度,例如[[[1,2]],2,[1,[3,[3]]]],3,[2,[2]]],那么它会具有什么类型?可以使用递归类型提示来表示任意深度嵌套的列表:fromtypingimportList,Union......