【发布时间】:2021-06-08 18:28:27
【问题描述】:
我有一个类似这样的 json 文件:
{
"Cars": [
{
"name": 'Honda'
"color": 'Black'
"age": 'Old'
},
{
"name": 'Ford'
"color": ' Red'
"age": 'Old'
},
{
"name": 'Mazda'
"color": 'Black'
"age": 'New'
}
]
}
我想编写一个函数,提示用户提供姓名、颜色和年龄,然后它会搜索 json 并返回与搜索参数最匹配的对象。我还希望用户只能输入一些参数。
例子:
- 用户输入 {'name':'Honda', 'color':None, 'age':None},返回 Honda 的所有信息
- 用户输入 {'name':None, 'color':'Black', 'age':None},返回本田和马自达的所有信息
- 用户输入 {'name':None, 'color':'Black, 'age':'New'},返回马自达的所有信息
我想不出任何效率低下的程序化方法。我能想到的最好的事情基本上是在整个 Json 中搜索第一个键的匹配项,然后搜索第二个键的匹配项,然后搜索第三个键的匹配项,然后打印结果。跳过查询负载中不存在的键会有所帮助,但这似乎仍然非常低效。
我不确定我是否可以在这里问技术问题,所以如果答案是我应该去构建所说的低效功能,然后回来获取有关如何改进它的信息,那很好,但我想我不妨先问问有没有常见的例子。
【问题讨论】:
-
好吧,如果你想找到“最佳匹配”……你能想出一条规则告诉你匹配“有多好”吗?
-
我不想找到“最佳”匹配,我想要找到“所有”匹配的“最佳”方式。更简单地说,我希望用户能够输入 1-3 个参数,并获取至少具有这些参数的每个 json 对象。你问我这个问题基本上就是我在这里的原因。我似乎无法通过谷歌/堆栈搜索正确的单词来获得我正在寻找的各种解决方案。我知道这不是新领域,我只是在发现常用方法时遇到了麻烦。
-
您基本上是在要求我们设计一个数据库应用程序并教您如何编写代码。这对于 Stack Overflow 来说太宽泛了。您要求使用通配符或简单的无限制参数的搜索功能。您需要研究现有的数据库包,或者可能只是学习 PANDAS 数据框接口。
-
我想创建 Pandas 数据库可能比尝试搜索 JSON 文件更容易。感谢您的来信。