9
votes

remplacer les touches de dictionnaire (chaînes) en python

Après l'importation CSV, j'ai suivi du dictionnaire avec les clés dans une langue différente: xxx

maintenant je veux changer les clés en anglais et (aussi à tous les minuscules). Ce qui devrait être: xxx

Comment puis-je y parvenir?


2 commentaires

Pourquoi les bowvotes? Je pense que j'ai besoin de savoir pourquoi pour pouvoir améliorer la question.


La question ne montre pas beaucoup d'effort de recherche. Par exemple, quelle approche (s) ait un sens pour vous? Avez-vous essayé de mettre en œuvre l'un d'entre eux? Que s'est-il passé quand tu as essayé?


3 Réponses :


1
votes
name_mapping = {
    'voornaam': 'first_name',
    ...
}

dic = your_dict

# Can't iterate over collection being modified,
# so change the iterable being iterated.
for old, new in name_mapping.iteritems():
    value = dic.get(old, None)
    if value is None:
        continue

    dic[new] = value
    del dic[old]

0 commentaires

24
votes

Vous avez du type de dictionnaire, il convient parfaitement à xxx


2 commentaires

Je ne pense pas que je veux convertir des valeurs en minuscule, ai-je raté quelque chose?


Oui en effet, je veux que les clés soient anglais et toutes minuscules, pas valeurs.



1
votes

Solution ci-dessus fonctionne bien s'il n'y a pas d'objets de dictionnaire imbriqué dans l'entrée dict.

ci-dessous est une fonction d'utilité plus généralisée qui remplace les clés existantes avec un nouvel ensemble de clés de touches récursives. P>

{
'test': {
    'last_name': 'Davis'
},
'mobile': '234567',
'first_name': 'John',
'last_name': 'Davis',
'phone': '123456'
}


0 commentaires