0
votes

Supprimer la valeur duplicate dans un dictionnaire imbriqué

J'ai un dictionnaire imbriqué D1 xxx

Je voudrais supprimer les valeurs dupliquées pour chaque touche. Le résultat après avoir supprimé les valeurs dupliquées doit être: xxx

Je ne sais pas comment le coder en python. S'il vous plaît aidez-moi.


3 commentaires

Qu'est-ce que vous avez essayé?


Est-ce toujours un dictionnaire de 2 niveaux ...


Savez-vous comment supprimer des doublons d'une liste en général? Si vous pouvez le faire, vous vous en bouclez simplement sur les entrées de dictionnaire et vous en attribuez le résultat.


5 Réponses :


2
votes

Vous pouvez utiliser la même stratégie que celle décrite dans cette réponse:

Convertir un dictionnaire imbriqué mixte en une liste

mais pour le cas où isinstance (d, liste) , retour , retourner définir (d)) (qui supprimera les entrées en double) au lieu de d .

par exemple: xxx


4 commentaires

Très propre! - Récursion est un art.


Qu'est-ce que -> dict ?


Une annotation de type précise que cette fonction renvoie une dict - qui est en fait un mensonge dans les appels récursifs, mais comme je le traitant, j'essayais de suivre le fait que l'appelant d'origine va passer dans une dict et Attendez-vous à récupérer une dicte avec à peu près la même forme. Une meilleure annotation de type prendrait un type de type union .


Merci beaucoup pour votre grande aide à la lumière.



1
votes

Vous pouvez essayer: xxx

sortie: xxx


0 commentaires

1
votes

Fondamentalement, si vous souhaitez supprimer des valeurs en double dans une séquence code> code>, vous le convertissez en un paramètre SET code> puis de retour.

>>> data = ['KANG_785','KANG_785','KANG_762']
>>> data = set(data)
>>> data
{'KANG_762', 'KANG_785'}
>>> for i in data:
...     print(i)
...     
KANG_762
KANG_785
>>> type(data)
<class 'set'>


0 commentaires

1
votes

Vous pouvez utiliser ensemble () pour éliminer les duplicats.

{'Hiraki': {'Hiraki_2': ['KANG_785', 'KANG_762']}, 'LakeTaupo': {'LakeTaupo_2': ['KANG_785', 'KANG_751']}}


0 commentaires

1
votes

Voici une solution récursive:

Ceci changera les listes surplace xxx

Note: @samwise m'a battue au poing avec une fonction récursive très soignée.


0 commentaires