J'ai une liste de dictionnaires que je reviens d'un appel de service Web,Liste des Dicts comparision pour correspondre entre les listes et détecter les changements de valeur en Python
listA = [{'name':'foo', 'val':'x'},
{'name':'bar', 'val':'1'},
{'name':'alice','val':'2'}]
J'ai besoin de comparer les résultats de l'appel précédent au service et retirer les changements. Donc, au prochain appel je peux obtenir:
listB = [{'name':'foo', 'val':'y'},
{'name':'bar', 'val':'1'},
{'name':'eve','val':'z'}]
La commande n'est pas garantie et la longueur de la liste n'est pas non plus garantie. Les noms ne changeront pas. Les données réelles ont plusieurs autres clés, mais je ne suis concerné que par "val".
J'essaie de trouver un moyen de récupérer une liste des noms dont les valeurs ont changé entre les appels seulement pour les noms qui sont dans les deux listes.
changed = ['foo'] # or [{'name':'foo'}]
Vous pourriez envisager de sauter la liste intermédiaire en utilisant un générateur dans votre 'dicter' fonction:' dict ([(i [ 'nom'], i [ 'val ']) pour i dans l]) 'devient' dict ((i [' nom '], i [' val ']) pour i dans l) ' –