image

Ajoutez WeChat " CNFeffery " pour rejoindre le groupe d'échange technique

L'exemple de code complet et les fichiers de cet article ont été téléchargés sur mon Githubréférentiel https://github.com/CNFeffery/PythonPracticalSkills

Ceci est le 10e numéro de ma série d'articles "Python Practical Secrets"Python . Cette série est basée sur l'expérience et l'expérience accumulées par l'auteur dans mon travail quotidien. Chaque numéro vous apporte une astuce simple qui peut être apprise en quelques minutes.

En tant que 10e épisode de la série, nous sommes sur le point d'apprendre : une comparaison approfondie Pythondes différences entre les objets.

image

Dans de nombreux cas, nous devons comparer la différence entre deux données. Si ce n'est que pour des objets numériques, alors la différence entre les deux est ce qu'on appelle la différence, mais que se passe-t-il si nous voulons comparer JSONla différence entre les deux données ?

En raison JSONdes caractéristiques des données qui peuvent être imbriquées et superposées, si vous voulez clairement trouver JSONla différence entre les deux données et la décrire, il est toujours un peu gênant d'écrire votre propre méthode. Dans ce cas, nous pouvons utiliser deepdiffune DeepDiff()méthode dans une bibliothèque tierce, qui est basée sur une comparaison approfondie récursive de différents objets.

pip install deepdiffUne fois l'installation terminée, vous pouvez comparer directement les différences entre les deux objets en important from deepdiff import DeepDiffles fonctions requises. JSONVoici un exemple simple :

from deepdiff import DeepDiff

obj1 = {
    'level1': [
        {
            'level1-1'1,
            'level1-2'1,
            'level1-3': [
                {
                    'level1-3-1': [123]
                }
            ]
        }
    ],
    'level2''a'
}

obj2 = {
    'level1': [
        {
            'level1-1'1,
            'level1-2'1,
            'level1-3': [
                {
                    'level1-3-1': [121]
                }
            ]
        }
    ],
    'level2''b'
}

DeepDiff(obj1, obj2)

On peut voir que le contenu de différence et l'emplacement spécifique sont spécifiquement déclarés dans les résultats de test imprimés, ce qui peut nous aider à effectuer d'autres traitements ultérieurs.

image

En plus de cela, deepdiffil existe des fonctions supplémentaires très riches, telles que l'ignorance des contrôles de comparaison pour les données d'un type spécifié :

image

Ou en définissant une règle de hiérarchie qui DeepDiff()ignore la vérification des différences pour les éléments aux positions spécifiées :

image

Il prend également en charge l'utilisation d'expressions régulières pour définir des règles hiérarchiques floues à ignorer. Par exemple, dans l'exemple suivant, nous utilisons des lots réguliers pour ignorer plusieurs paires clé-valeur :

image

Limitez la précision de vérification pour les nombres à virgule flottante, comme dans l'exemple suivant, significant_digits=2la différence après la deuxième virgule décimale est ignorée :

image

Pour plus d'utilisation, les lecteurs et amis intéressés peuvent se déplacer pour en https://zepworks.com/deepdiff/5.8.2/diff.htmlsavoir plus.


Ce partage est terminé, à la prochaine ~👋

image

Rejoignez Knowledge Planet [Nous parlons de science des données]

Plus de 500 petits partenaires pour apprendre ensemble !




image





·  Lecture recommandée  ·

Meilleur cache d'opération de fonction en Python

Non seulement une explication rapide et détaillée de la nouvelle version de lecture et d'écriture de fichiers geopandas

Développement en Python pur Générateur de données GeoJSON en ligne

image