J'ai des questions sur les dictionnaires à Python. P>
ici c'est: p>
J'ai un dict comme Maintenant, je veux obtenir tous les éléments clés de la même valeur et l'enregistrer dans un nouveau dict. P>
Le nouveau dict devrait être ressemblant à: p>
dict = {'ABC': 'A', 'CDF': 'B', 'GH': 'A', 'FH': 'G', 'HFZ': 'g'} code> p>
new_dict = {'B' :( 'CDF'), 'A' :( 'ABC', 'GH'), 'G' :( 'FH', 'HFZ')} Code > p>
4 Réponses :
Si vous allez bien avec des listes au lieu de tuples dans le nouveau dictionnaire, vous pouvez utiliser
new_dict = {} for k, v in some_dict.iteritems(): new_dict.setdefault(v, []).append(k)
Voici une implémentation naïve. Quelqu'un avec de meilleures compétences en python peut probablement le rendre plus concis et génial. Ceci produit P> {'a': ['abc', 'gh'], 'b': ['cdf'], 'g': ['fh', 'hfz']}
Si vous voulez spécifiquement des tuples comme les valeurs de votre nouveau dictionnaire, vous pouvez toujours utiliser defaultDict et utiliser la concaténation de tuple. Cette solution fonctionne dans Python 3.4 +:
target2 = defaultdict(list) for key in source: target2[source[key]].append(key) for key in target2: target2[key] = tuple(target2[key]) print(target2)
Cela peut être fait de cette façon aussi, sans utiliser de fonctions supplémentaires.
some_dict = { 'abc':'a', 'cdf':'b', 'gh':'a', 'fh':'g', 'hfz':'g' } new_dict = { } for keys in some_dict: new_dict[some_dict[keys]] = [ ] for keys in some_dict: new_dict[some_dict[keys]].append(keys) print(new_dict)
N'utilisez pas «dict» comme nom de variable, car il s'agit du nom d'une fonction intégrée.