J'ai un dictionnaire imbriqué D1 Je voudrais supprimer les valeurs dupliquées pour chaque touche. Le résultat après avoir supprimé les valeurs dupliquées doit être: p> Je ne sais pas comment le coder en python. S'il vous plaît aidez-moi. P> p>
5 Réponses :
Vous pouvez utiliser la même stratégie que celle décrite dans cette réponse:
Convertir un dictionnaire imbriqué mixte en une liste p>
mais pour le cas où par exemple: p> isinstance (d, liste) code>, retour
, retourner
définir (d)) code> (qui supprimera les entrées en double) au lieu de
d code>. p>
Très propre! - Récursion est un art.
Qu'est-ce que -> dict code>?
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 code>.
Merci beaucoup pour votre grande aide à la lumière.
Vous pouvez essayer: sortie: p>
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'>
Vous pouvez utiliser ensemble () pour éliminer les duplicats.
{'Hiraki': {'Hiraki_2': ['KANG_785', 'KANG_762']}, 'LakeTaupo': {'LakeTaupo_2': ['KANG_785', 'KANG_751']}}
Ceci changera les listes surplace em> p> Note: @samwise m'a battue au poing avec une fonction récursive très soignée. P> h2>
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.