J'ai un dictionnaire ci-dessous:
a = event['params']['path']['matchphrase'] #term
b = list(event['params']['querystring'].keys())[0] #dataproduct.keyword
c = list(event['params']['querystring'].values())[0] #health
body=f"{query: {{a} : {{b}: {c}}}}"
print(body)
Je voudrais accéder aux clés et valeurs du dictionnaire événement ci-dessus et encadrer un nouveau dictionnaire comme suit: p >
{"query": {"term": {"dataproduct.keyword": "health"}}}
Voici le code que j'ai essayé:
event = {
"body-json": {},
"params": {
"path": {
"matchphrase": "term"
},
"querystring": {
"dataproduct.keyword": "health"
},
"header": {
"Accept": "application/json"
}
},
"resource-path": "/{matchphrase}"
}
Suis-je en train de manquer quelque chose?
3 Réponses :
Cela devrait fonctionner:
body = {"query":{str(a):{str(b):str(c)}}}
print(body)
L'échappement est incorrect.
Essayez plutôt ceci:
body = f'{{"query": {{{a!r}: {{{b!r}: {c!r}}}}}}}'
J'ai également ajouté ! r qui renverra la représentation réelle ( repr ) de l'objet (vous n'avez donc pas besoin d'ajouter artificiellement des guillemets).
vous pouvez créer un dictionnaire, puis en obtenir une version sous forme de chaîne en utilisant json.dumps.
{"query": {"term": {"dataproduct.keyword": "health"}}}
Sortie: p>
import json
event = {
"body-json": {},
"params": {
"path": {"matchphrase": "term"},
"querystring": {"dataproduct.keyword": "health"},
"header": {"Accept": "application/json"},
},
"resource-path": {"matchphrase}"},
}
a = event["params"]["path"]["matchphrase"] # term
b = list(event["params"]["querystring"].keys())[0] # dataproduct.keyword
c = list(event["params"]["querystring"].values())[0] # health
result = {"query": {a: {b: c}}}
print(json.dumps(result))
pouvez-vous répondre à la question ci-dessous stackoverflow.com/questions/63050735/...
@aysh Je n'ai aucune expérience avec dynamodb et la recherche élastique.
body = f '{{"query": {{{a}: {{{b}: {c}}}}}}}'