Comment puis-je changer les touches dans un dictionnaire pour les majuscules et ajouter des valeurs de la clé dans le dictionnaire?
J'ai un dictionnaire qui ressemble à ceci:
d = {'A':110, 'a':100, 'T':50, 't':5}
Je veux changer les touches majuscules et de combiner A+a
et T+t
et ajouter leurs valeurs, de sorte que le dictionnaire ressemble à ceci:
d = {'A': 210, T: 55}
C'est ce que j'ai essayé:
for k, v in d.items():
k.upper(), v
et le résultat est:
('A', 110)
('A', 100)
('T', 50)
('t', 5)
Je ressemble tuples, mais je veux le changer dans le dictionnaire, j'ai donc essayé d'écrire une fonction:
def Upper(d):
for k, v in d.items:
k.upper(), v
return d
mais il renvoie le dictionnaire inchangé.
Après j'ai changé les touches majuscules, j'avais trouvé cette solution pour comment ajouter des valeurs de clés dans un dictionnaire:
dict([(x, a[x] + b[x]) if (x in a and x in b) else (x, a[x]) if (x in a) else (x, b[x])
mais d'abord, j'ai besoin d'obtenir les clés en majuscules!
Avec Python, vous devez être beaucoup plus attention à l'indentation. Vos deux "ce que j'ai essayé" exemples d'indentation erreurs qui ont empêché l'exécution de code à tous.
OriginalL'auteur edg | 2012-03-14
Vous devez vous connecter pour publier un commentaire.
Counter
fait cela très bienvous aurez besoin d'au moins Python2.7 pour
Counter
OriginalL'auteur John La Rooy
upper()
méthode ne permet pas de modifier quoi que ce soit. Vous pouvez utiliser le code suivant:Il est possible d'écrire un code qui change (pastebin.com/FHgv9Y5p), mais cette mise en œuvre est moins transparente, et n'a approximativement le même nombre d'opérations. À l'aide de fonctions ci-dessus, vous pourriez écrire
d = capitalize_keys(d)
.OriginalL'auteur citxx
defaultdict
est utile:Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: premier argument doit être appelable
C'est parce qu'il doit être
defaultdict(int)
.fixe, utilisez
int
au lieu de0
lors de l'initialisationdefaultdict
instance.OriginalL'auteur Roman Bodnarchuk
Je pense que vous devez reconstruire votre dictionnaire. Exemple:
De sortie:
Ou de l'utilisation de la solution de @citxx avec
result.get(upper_key, 0) + value
et d'éviter la defaultdict tout à fait.Remplacer simplement
d
avecd=upper(d)
et vous êtes fine.OriginalL'auteur hochl
Avec cette fonction (corrigé):
upper_dict(dict(a=1, A=1))
doit retourner{'A': 2}
; votre fonction retourne{'A': 1}
.c'est à dire s'il vous plaît corriger cette limitation ou la suppression de votre réponse.
Ok, fixer la limitation.
OriginalL'auteur SmartElectron
Utiliser une très longue dictionnaire de la compréhension: l'
De sortie:
OriginalL'auteur fraxel