Je veux changer la clé d'une entrée dans un dictionnaire Python.
Existe-t-il un moyen simple de procéder?
python
dictionary
sequence
user469652
la source
la source
Réponses:
Facile à réaliser en 2 étapes:
Ou en 1 étape:
qui augmentera
KeyError
sidictionary[old_key]
n'est pas défini. Notez que cela va supprimerdictionary[old_key]
.la source
dict[new_value] = dict.pop(old_value, some_default_value)
pour éviter celaold_key
sera différente de la position denew_key
.si vous voulez changer toutes les clés:
si vous souhaitez modifier une seule touche: vous pouvez suivre l'une des suggestions ci-dessus.
la source
{ d1[key] : value for key, value in d.items() }
pop'n'fresh
la source
En python 2.7 et supérieur, vous pouvez utiliser la compréhension du dictionnaire: Ceci est un exemple que j'ai rencontré lors de la lecture d'un CSV à l'aide d'un DictReader. L'utilisateur avait suffixé tous les noms de colonne avec ':'
ori_dict = {'key1:' : 1, 'key2:' : 2, 'key3:' : 3}
se débarrasser de la fin «:» dans les touches:
corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }
la source
Étant donné que les clés sont ce que les dictionnaires utilisent pour rechercher des valeurs, vous ne pouvez pas vraiment les modifier. La chose la plus proche que vous pouvez faire est d'enregistrer la valeur associée à l'ancienne clé, de la supprimer, puis d'ajouter une nouvelle entrée avec la clé de remplacement et la valeur enregistrée. Plusieurs des autres réponses illustrent différentes manières d'y parvenir.
la source
Si vous avez un dict complexe, cela signifie qu'il y a un dict ou une liste dans le dict:
la source
Pas de moyen direct de le faire, mais vous pouvez supprimer puis attribuer
ou effectuez des modifications de masse:
la source
d = { changeKey(k): v for k, v in d.items()}
Pour convertir toutes les clés du dictionnaire
Supposons que ce soit votre dictionnaire:
Pour convertir tous les tirets en traits de soulignement dans l'exemple de clé de dictionnaire:
la source
supposons que nous voulons changer les clés des éléments de liste p = ['a', 'b']. le code suivant fera:
et nous obtenons
la source
Vous pouvez associer la même valeur à plusieurs clés, ou simplement supprimer une clé et rajouter une nouvelle clé avec la même valeur.
Par exemple, si vous avez des clés-> valeurs:
il n'y a aucune raison pour que vous ne puissiez pas ajouter
purple->2
ou supprimerred->1
et ajouterorange->1
la source
En cas de changement de toutes les clés à la fois. Ici, j'enfonce les clés.
la source
Je n'ai pas vu cette réponse exacte:
Vous pouvez même le faire pour les attributs d'objet. Faites-en un dictionnaire en procédant comme suit:
Ensuite, vous pouvez manipuler les attributs d'objet comme vous le feriez pour un dictionnaire:
la source