python - 如何通过检查长度从字典中创建动态查询
问题描述
字典如下。下面是长度为 2 和 3 的示例字典。通过检查条件需要动态生成查询
一个=[{'data': 'abc'}, {'prod': 'def'}]
- if len(a) = 2: #below 查询必须生成
"query": {
"bool": {
"should": [
{
"query_string": {
"query": "*abc*",
"fields": [
"data"
]
}
},
{
"query_string": {
"query": "*def*",
"fields": [
"prod"
]
}
}
]
}
}
}
一个=[{'data': 'abc'}, {'prod': 'def'},{'email': '@gmail'}]
if len(a) = 3 #下面是查询
"query": { "bool": { "should": [ { "query_string": { "query": "*abc*", "fields": [ "data" ] } }, { "query_string": { "query": "*def*", "fields": [ "prod" ] } }, { "query_string": { "query": "*@gmail.com*", "fields": [ "email" ] } } ] } } }```
基本上如果字典继续添加{"query_string": {"query": "*@gmail.com*","fields": ["email"]}}
查询也继续添加
解决方案
使用简单的迭代。
前任:
a = [{'data': 'abc'}, {'prod': 'def'}]
result = {"query": {
"bool": {
"should": []
}
}
}
for item in a:
for k, v in item.items():
result['query']['bool']['should'].append({
"query_string": {
"query": f"*{v}*",
"fields": [
k
]}
})
print(result)
输出:
{'query': {'bool': {'should': [{'query_string': {'fields': ['data'],
'query': '*abc*'}},
{'query_string': {'fields': ['prod'],
'query': '*def*'}}]}}}
推荐阅读
- deep-learning - 通过斯坦福核心 NLP 使用 RNN 进行情感分析
- python - Django 数组字段外键
- c# - Can we control the [Setup] method execution before [Test] Method Execution in Selenium N unit
- c++ - Copy trivially copyable types using temporary storage areas: is it allowed?
- java - Android Studio 应用程序可以运行,但有时在其他设备上会出错
- javascript - FlatList converting single item to an array
- java - How to avoid if statements java7 or make code more readable
- xml - 有效的 XML 字符
- android-studio - 使用wikiitude在android studio上创建一个应用程序,但是它在启动时不断崩溃
- build - How to generate files using dart source_gen to a different directory