2012-10-18 9 views
2

Est-il possible de remplacer toutes les valeurs d'un dictionnaire, quelle que soit leur valeur, par l'entier 1?Python: remplacer toutes les valeurs dans un dictionnaire

Merci!

+0

vous avez essayé quelque chose? –

+0

avant de poster ici sur SO nous suggérons fortement d'essayer quelque chose et finalement le poster, parce que la signification de cette communauté n'est pas de fournir des solutions prêtes à l'emploi, mais aider les gens à apprendre et à mieux comprendre leurs problèmes :) –

Répondre

6

Bien sûr, vous pouvez faire quelque chose comme:

d = {x: 1 for x in d} 

Cela crée un nouveau dictionnaire d qui associe toutes les clés dans d (l'ancien) à 1.

+0

vous, je cherchais quelque chose comme ça. Je ne savais pas exactement quel était le bon format, et la dernière fois que j'ai essayé de poster quelque chose sur les dictionnaires, j'ai été ridiculisé; d'où la raison pour laquelle je n'ai pas posté ma tentative ratée ici. – user1620716

+5

Pour modifier le dictionnaire original: 'pour k en d: d [k] = 1' –

+1

Encore une autre façon:' d = d.fromkeys (d, 1) ' – barracel

0

Oui, c'est possible. Itérer à travers toutes les clés dans le dictionnaire et définir la clé associée à 1.

0
a = {1:2, 2:2,3:2} 
a = {x:1 for (x,_) in a.iteritems()} 
print a 

{1: 1, 2: 1, 3: 1}

+3

sûrement juste' {k: 1 for k in a} '... pas besoin d'obtenir chaque élément pour jeter la valeur ... – kindall

+0

Notez que cela ne modifie pas la dict originale. Ce n'est pas vraiment un problème à moins que vous ne prévoyiez de l'encapsuler dans une fonction: 'def overwrite_dict_values ​​(d, nouvelle_valeur): ...' –

8

Vous pouvez utiliser une compréhension dict (comme d'autres l'ont dit) pour créer un nouveau dictionnaire avec les mêmes touches que l'ancien dictionnaire, ou, si vous devez faire la chose en place:

for k in d: 
    d[k] = 1 

Si vous êtes vraiment friands de 1-liners, vous pouvez le faire en place à l'aide update:

d.update((k,1) for k in d) 
Questions connexes