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
Github
ré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 Python
des différences entre les objets.

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 JSON
la différence entre les deux données ?
En raison JSON
des caractéristiques des données qui peuvent être imbriquées et superposées, si vous voulez clairement trouver JSON
la 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 deepdiff
une DeepDiff()
méthode dans une bibliothèque tierce, qui est basée sur une comparaison approfondie récursive de différents objets.
pip install deepdiff
Une fois l'installation terminée, vous pouvez comparer directement les différences entre les deux objets en important from deepdiff import DeepDiff
les fonctions requises. JSON
Voici un exemple simple :
from deepdiff import DeepDiff
obj1 = {
'level1': [
{
'level1-1': 1,
'level1-2': 1,
'level1-3': [
{
'level1-3-1': [1, 2, 3]
}
]
}
],
'level2': 'a'
}
obj2 = {
'level1': [
{
'level1-1': 1,
'level1-2': 1,
'level1-3': [
{
'level1-3-1': [1, 2, 1]
}
]
}
],
'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.

En plus de cela, deepdiff
il 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é :

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 :

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 :

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

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.html
savoir plus.
Ce partage est terminé, à la prochaine ~👋

Rejoignez Knowledge Planet [Nous parlons de science des données]
Plus de 500 petits partenaires pour apprendre ensemble !
· Lecture recommandée ·
Meilleur cache d'opération de fonction en Python
Développement en Python pur Générateur de données GeoJSON en ligne