Heim > Backend-Entwicklung > Python-Tutorial > Der Trick bei der Verwendung der bidirektionalen Wörterbuchstruktur des Bidict-Moduls in Python

Der Trick bei der Verwendung der bidirektionalen Wörterbuchstruktur des Bidict-Moduls in Python

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-08-04 08:55:42
Original
2412 Leute haben es durchsucht

Schnellstart

Das Modul stellt drei Klassen zur Verfügung, um einige Operationen von Eins-zu-Eins-Zuordnungstypen zu verarbeiten
'bidict', 'inverted', 'namedbidict'

>>> import bidict
>>> dir(bidict)
['MutableMapping', '_LEGALNAMEPAT', '_LEGALNAMERE', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'bidict', 'inverted', 'namedbidict', 're', 'wraps']
 
Nach dem Login kopieren

1.Bidict-Klasse:

>>> from bidict import bidict
>>> D=bidict({'a':'b'})
>>> D['a']
'b'
>>> D[:'b']
'a'
>>> ~D        #反转字典
bidict({'b': 'a'})
>>> dict(D)    #转为普通字典
{'a': 'b'}
>>> D['c']='c'   #添加元素,普通字典的方法都可以用
>>> D
bidict({'a': 'b', 'c': 'c'}) 
Nach dem Login kopieren

2.invertierte Klasse, invertieren Sie den Schlüsselwert des Wörterbuchs

>>> seq = [(1, 'one'), (2, 'two'), (3, 'three')]
>>> list(inverted(seq))
    [('one', 1), ('two', 2), ('three', 3)]
Nach dem Login kopieren

3.namedbidict(mapname, fwdname, invname):

>>> CoupleMap = namedbidict('CoupleMap', 'husbands', 'wives')
>>> famous = CoupleMap({'bill': 'hillary'})
>>> famous.husbands['bill']
'hillary'
>>> famous.wives['hillary']
'bill'
>>> famous.husbands['barack'] = 'michelle'
>>> del famous.wives['hillary']
>>> famous
CoupleMap({'barack': 'michelle'})
Nach dem Login kopieren

Weitere Inhalte

Wenn Ihnen die Doppelpunktmethode nicht gefällt, können Sie die Klasse „namedbidict“ verwenden, um dem bidirektionalen Wörterbuch zwei Aliase zu geben. Auf diese Weise werden der Außenwelt zwei Unterwörterbücher, Vorwärts und Rückwärts, zur Verfügung gestellt. Tatsächlich existiert es immer noch in Form eines Zwei-Wege-Wörterbuchs:

>>> HTMLEntities = namedbidict('HTMLEntities', 'names', 'codepoints')
>>> entities = HTMLEntities({'lt': 60, 'gt': 62, 'amp': 38}) # etc
>>> entities.names['lt']
60
>>> entities.codepoints[38]
'amp'
Nach dem Login kopieren

Sie können auch den unären Umkehroperator „~“ verwenden, um das Bidict-Umkehrzuordnungswörterbuch zu erhalten.

>>> import bidict
>>> from bidict import bidict
>>> husbands2wives = bidict({'john': 'jackie'})
>>> ~husbands2wives
bidict({'jackie': 'john'})
Nach dem Login kopieren
Nach dem Login kopieren

Achten Sie darauf, in den folgenden Situationen Klammern hinzuzufügen, da ~ eine niedrigere Priorität hat als eckige Klammern :

>>> import bidict
>>> from bidict import bidict
>>> husbands2wives = bidict({'john': 'jackie'})
>>> ~husbands2wives
bidict({'jackie': 'john'})
Nach dem Login kopieren
Nach dem Login kopieren

Achten Sie darauf, in den folgenden Situationen Klammern hinzuzufügen, da ~ eine niedrigere Priorität als eckige Klammern hat:

>>> (~bi)['one']
1
Nach dem Login kopieren

bidict ist keine Unterklasse von dict, aber seine API ist eine Obermenge von dict (aber es gibt keine fromkeys-Methode und stattdessen wird die MutableMapping-Schnittstelle verwendet).

Die invertierte Iteratorklasse dreht den Schlüssel und den Wert um, z. B.:

>>> seq = [(1, 'one'), (2, 'two'), (3, 'three')]
>>> list(inverted(seq))
[('one', 1), ('two', 2), ('three', 3)]
Nach dem Login kopieren

Die invert()-Methode von bidict ähnelt inverted. Abhängige Module: MutableMapping in Sammlungen, Wraps in Functools, re.

bidikt kann mit Wörterbuch

verglichen werden
>>> bi == bidict({1:'one'})
>>> bi == dict([(1, 'one')])
True
Nach dem Login kopieren

Bidict unterstützt auch Methoden, die in anderen Wörterbüchern üblich sind:

>>> bi.get('one')
1
>>> bi.setdefault('one', 2)
1
>>> bi.setdefault('two', 2)
2
>>> len(bi) # calls __len__
2
>>> bi.pop('one')
1
>>> bi.popitem()
('two', 2)
>>> bi.inv.setdefault(3, 'three')
'three'
>>> bi
bidict({'three': 3})
>>> [key for key in bi] # calls __iter__, returns keys like dict
['three']
>>> 'three' in bi # calls __contains__
True
>>> list(bi.keys())
['three']
>>> list(bi.values())
[3]
>>> bi.update([('four', 4)])
>>> bi.update({'five': 5}, six=6, seven=7)
>>> sorted(bi.items(), key=lambda x: x[1])
[('three', 3), ('four', 4), ('five', 5), ('six', 6), ('seven', 7)]
Nach dem Login kopieren

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage