Dictionnaire avec les clés dans unicode
Est-il possible en Python à utiliser des caractères Unicode comme clés d'un dictionnaire?
J'ai Cyrillique mots en Unicode que j'ai utilisés comme clés. Lorsque vous essayez d'obtenir une valeur d'une clé, j'ai le traceback:
Traceback (most recent call last):
File "baseCreator.py", line 66, in <module>
createStoresTable()
File "baseCreator.py", line 54, in createStoresTable
region_id = regions[region]
KeyError: u'\u041c\u0438\u043d\u0441\u043a/\u041c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u0438\u0439\xa0'
J'ai eu des problèmes similaires quand j'ai créé et interrogé dictionnaire différentes versions codées de la même "chaîne". C'est quelque chose à surveiller. Méthodes utiles sont les
Il peut y avoir des problèmes avec unicode clés en python 3.2.
Comment avez-vous résoudre ce problème? J'ai le même problème dans la section 3.4.2. J'ai imprimé les touches et les touches sont existantes et toujours obtenir le ci-dessus a signalé une erreur.Toutes les mises à jour s'il vous plaît?
str.encode
et str.decode
chaîne de méthodes. Et, bien sûr, il est possible que la clé n'existe pas dans le dictionnaire, donc n'ayant rien à voir avec le codage de la clé.Il peut y avoir des problèmes avec unicode clés en python 3.2.
Comment avez-vous résoudre ce problème? J'ai le même problème dans la section 3.4.2. J'ai imprimé les touches et les touches sont existantes et toujours obtenir le ci-dessus a signalé une erreur.Toutes les mises à jour s'il vous plaît?
OriginalL'auteur KoirN | 2012-07-27
Vous devez vous connecter pour publier un commentaire.
Oui, c'est possible. L'erreur que vous obtenez la clé que vous utilisez n'existe pas dans votre dictionnaire.
Debug, essayez
print
ing votre dictionnaire, vous allez voir les repr de chaque touche, qui doit montrer la véritable clé ressemble.OriginalL'auteur
Python 2.x convertit les deux touches pour bytestrings lorsque l'on compare les deux touches pour les fins de vérifier si une clé existe déjà, l'accès à une valeur, ou de remplacer une valeur. Une clé peut être stocké en Unicode, mais deux distincts des chaînes Unicode ne peuvent pas être utilisés comme clés si elles réduisent à l'identique bytestrings.
Vous pouvez utiliser l'Unicode touches, dans un certain sens.
Unicode touches sont conservés dans Unicode:
Vous pouvez accéder à la valeur de toute chaîne Unicode ou bytestring que "équivaut à" la clé:
L'aide de la clé ou de ce qui "est égal à" la clé d'écrire une nouvelle valeur de réussir et de conserver la clé:
Effet, la comparaison
'a'
à une clé existante a étéTrue
, la valeur correspondant à celle existant Unicode clé a été remplacé par5
. Dans le premier exemple que je donne, la deuxième cléu'a'
fourni dans le littéral pourd
compare honnêtement à la précédemment affecté à la clé, ainsi que la bytestring'a'
a été retenu comme la clé, mais la valeur a été remplacé par le2
.OriginalL'auteur