2010-05-19 9 views
3

ici est un exemple de la dictpython: l'identification des doublons dans les clés de dictionnaire disparates

 
ActivePython 3.1.2.3 (ActiveState Software Inc.) based on 
Python 3.1.2 (r312:79147, Mar 22 2010, 12:20:29) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> dict = {} 
>>> dict[("127.0.0.1", "127.0.0.2")] = ["value", "value2", "value3"] 
>>> dict[("127.0.0.1", "127.0.0.3")] = ["value", "value2", "value3"] 
>>> dict[("127.0.0.1", "127.0.0.4")] = ["value1", "value2", "value3"] 

personne ne sait d'une manière propre et robuste pour retourner une liste des clés de dictionnaire dont les valeurs sont identiques quelle que soit la valeur type? Dans l'exemple ci-dessus, les deux premières entrées ont des clés différentes mais des valeurs identiques. Je suis à la recherche d'un propre façon d'obtenir une liste de ces deux clés.

Répondre

3

Convertir la liste en un tuple.

Sur la base de l'exemple countMap dans votre poste, avant que vous avez retiré (s'il est encore pertinent pour vous):

countMap = {} 
for k, v in dict.items(): 
    v = tuple(v) 
    countMap[v] = countMap.get(v,0) + 1 

Mais, s'il vous plaît ne pas appeler vos variables dict, puisque c'est la nom d'un type python.

Autre solution:

index = {} 
for k, v in dict.items(): 
    v = tuple(v) 
    index[v] = index.get(v, []) + [k] 

Ou plus propre avec un defaultdict:

from collections import defaultdict 

index = defaultdict(list) 
for k, v in dict.items(): 
    index[tuple(v)].append(k) 
Questions connexes