Python 如何通过检查长度从字典创建动态查询
字典在下面。下面是长度为2和3的示例词典。通过检查条件,需要动态生成查询 a=Python 如何通过检查长度从字典创建动态查询,python,dictionary,Python,Dictionary,字典在下面。下面是长度为2和3的示例词典。通过检查条件,需要动态生成查询 a=[{'data':'abc'},{'prod':'def'}] 如果len(a)=2: #下面的查询必须生成 a=[{'data':'abc'},{'prod':'def'},{'email':'@gmail'}] 如果len(a)=3 #下面是查询 "query": { "bool": { "should": [
[{'data':'abc'},{'prod':'def'}]
- 如果len(a)=2: #下面的查询必须生成
[{'data':'abc'},{'prod':'def'},{'email':'@gmail'}]
- 如果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”]}
查询也会使用简单的迭代继续添加
Ex:
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*'}}]}}}
输出:
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*'}}]}}}
为什么我们需要给出
f
string所需的{v}。。。