J'ai un dictionnaire de paquets avec nom_paquet étant la clé et un dictionnaire de certains détails étant la valeur :Comment filtrer les dictionnaires dans Jinja?
{
"php7.1-readline": {
"latest": "7.1.9-1+ubuntu14.04.1+deb.sury.org+1",
"origins": [
"ppa.launchpad.net"
],
"version": "7.1.6-2~ubuntu14.04.1+deb.sury.org+1",
"www": "http://www.php.net/"
},
"php7.1-xml": {
"latest": "7.1.9-1+ubuntu14.04.1+deb.sury.org+1",
"origins": [
"ppa.launchpad.net"
],
"version": "7.1.6-2~ubuntu14.04.1+deb.sury.org+1",
"www": "http://www.php.net/"
},
"plymouth": {
"version": "0.8.8-0ubuntu17.1"
},
....
}
Je voudrais réduire ci-dessus à un dictionnaire avec seulement la packages, qui ont l'attribut latest
dans leurs valeurs.
Il semblerait que json_query
est le filtre à utiliser, mais je ne peux pas comprendre la syntaxe. Les exemples là-bas tous semblent fonctionner sur listes des dictionnaires, des dictionnaires non de même ...
Par exemple, si je « pipe » le dictionnaire ci-dessus dans json_query('*.latest')
, je reçois la liste du dernières versions réelles:
[
"7.1.9-1+ubuntu14.04.1+deb.sury.org+1",
"7.1.9-1+ubuntu14.04.1+deb.sury.org+1",
"7.1.6-2~ubuntu14.04.1+deb.sury.org+1"
]
Comment puis-je obtenir l'ensemble des éléments du dictionnaire à la place?
Un espoir?
Merci, mais c'est un peu triste ... J'ai délibérément choisi la structure du dictionnaire pour les paquets de façon à pouvoir rechercher les détails d'un paquet par son nom rapidement ('O (ln (n))'). Le convertir en une liste rend tout linéaire ... Tant que nous corrigeons les choses de toute façon, ne pouvons-nous pas imaginer quelque chose de plus proche de 'with_dict' d'Ansible - où vous pouvez opérer sur chaque' item' et 'value de chaque élément 'directement? –
Vous êtes libre de modifier mon exemple de gist. Ou écrivez votre plugin personnalisé pour traiter votre jeu de données spécifique très rapidement. Ou demander à un gourou Ansible de le faire :-D –
Je sais, je peux écrire un filtre personnalisé. Avoir, en fait.Mais j'espérais, cela pourrait se faire sans un - avec une combinaison intelligente de 'extract',' map', 'selectattr', et/ou' json_query' ... Oh, eh bien, merci encore pour votre aide - - un résultat négatif est toujours un résultat, n'est-ce pas ... –