mémo python utilisant perl - type de dictionnaire (casse non valide)

En perl, c'est hash.

--Il semble que la clé de hachage puisse être supérieure ou inférieure. C'est pratique. C'est un module, pas un simple python. Il s'appelle CaseInsensitive Dict.

>>> from requests.structures import CaseInsensitiveDict
>>> cid = CaseInsensitiveDict({'Apple': 'osx', 'NeXT': 'STEP'})
>>> cid
{'Apple': 'osx', 'NeXT': 'STEP'}
>>> cid['apple']
'osx'
>>> cid['APPLE']
'osx'
>>> cid['next']
'STEP'
>>> cid['nEXT']
'STEP'

Erreur sans clé

--S'il s'agit de perl, "" sera renvoyé s'il n'est pas en hachage, mais s'il s'agit de python, une erreur se produira. (Gênant ...)

>>> cid['microsoft']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "〜〜/python3.5/site-packages/requests/structures.py", line 54, in __getitem__
    return self._store[key.lower()][1]
KeyError: 'microsoft'

--J'étais faché ...

Confirmation de l'existence de la clé

--Il semble que vous puissiez utiliser l'opérateur in et la méthode has_key pour vérifier l'existence de la clé ... --CaseInsensitiveDict semble avoir des restrictions. --has_key n'a pas été préparé.

has_key


>>> cid.has_key('microsoft')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'CaseInsensitiveDict' object has no attribute 'has_key'

Si c'est le cas, ça va.

in


>>> 'microsoft' in cid
False
>>> 'apple' in cid
True
>>> 'Apple' in cid
True

Avec perl ...

--Utilisez un module appelé Hash :: Case :: Preserve. ――Il semble que le comportement en l'absence de clé soit le même que le hachage brut.

cid.pl


use Hash::Case::Preserve;
tie my(%cid),'Hash::Case::Preserve';
$cid{'NeXT'} = 'STEP';
$cid{'Apple'} = 'osx';
print $cid{'next'};
print $cid{'APPLE'};
print $cid{'microsoft'};
print keys %cid
sh-3.2$ perl -l cid.pl 
STEP
osx

AppleNeXT

Recommended Posts

mémo python utilisant perl - type de dictionnaire (casse non valide)
Un mémo python utilisant perl --format est pratique.
Le rond de Python n'est pas strictement rond
Mémo int de type immuable Python
mémo python utilisant perl --join
Mémo récapitulatif des types de données Python
Remarque Python: à propos de la comparaison en utilisant is
[Note personnelle] Type de séquence / type de mappage Python
python Remarque: lorsque easy_install ne peut pas être utilisé
[Python] Erreur de nom: le nom'urlparse 'n'est pas défini
[python] [meta] Le type de python est-il un type?
[Python] Mémo de prétraitement complet tel quel
Mémo Python
mémo python
Mémo Python
Mémo Python
Mémo Python
[Personal memo] julia --Utiliser la bibliothèque Python avec Julia en utilisant PyCall
Python Pandas ne convient pas au traitement par lots
python Remarque: Traitez les listes collectivement comme un ensemble
Le journal Python n'est pas sorti avec docker-compose up
[Hyperas] Erreur de type: la résolution de l'objet "fonction" n'est pas en indice
[Python] Erreur de type: l'objet 'WebElement' n'est pas itérable Que faire lorsqu'une erreur se produit
Il y a un modèle que le programme ne s'est pas arrêté lors de l'utilisation du thread Python