Python OrderedDict is een subklasse van dict die de volgorde van toegevoegde items bijhoudt. Wanneer we itereren over een OrderedDict, worden items geretourneerd in de volgorde waarin ze zijn toegevoegd. Een gewoon woordenboek houdt de volgorde van toevoeging niet bij. Dus bij iteratie worden items in een willekeurige volgorde geretourneerd. Als we ervoor willen zorgen dat items worden geretourneerd in de volgorde waarin ze zijn toegevoegd, kunnen we OrderedDict gebruiken.
Python OrderedDict
- OrderedDict maakt deel uit van de python collections-module.
- We kunnen een lege
OrderedDict
maken en items eraan toevoegen. Als we een OrderedDict maken door een dict-argument door te geven, kan de volgorde verloren gaan omdat dict de volgorde van toevoeging niet behoudt. - Als een item wordt overschreven in de OrderedDict, wordt de positie behouden.
- Als een item wordt verwijderd en opnieuw wordt toegevoegd, wordt het naar het einde verplaatst.
- OrderedDict
popitem
verwijdert items in FIFO-volgorde. Het accepteert een boolean argumentlast
, als dit is ingesteld opTrue
, worden items in LIFO-volgorde geretourneerd. - We kunnen een item naar het begin of het einde van de OrderedDict verplaatsen met de
move_to_end
-functie. Het accepteert een boolean argumentlast
, als het ingesteld is opFalse
, wordt het item naar het begin van de geordende dictionary verplaatst. - Vanaf Python 3.6 blijft de volgorde behouden voor de sleutelargumenten die aan de OrderedDict-constructeur worden doorgegeven, zie PEP-468.
- We kunnen de
reversed()
-functie gebruiken met OrderedDict om elementen in omgekeerde volgorde te doorlopen. - Equaliteitstests tussen OrderedDict-objecten zijn gevoelig voor volgorde en worden geïmplementeerd als
list(od1.items())==list(od2.items())
. - Equaliteitstests tussen OrderedDict en andere mapping-objecten zijn ongevoelig voor volgorde zoals bij gewone dictionaries. Hierdoor kunnen OrderedDict-objecten overal worden gebruikt waar een gewone dictionary wordt gebruikt.
Voorbeelden van Python OrderedDict
Laten we eens kijken naar enkele codevoorbeelden van Python OrderedDict.
Creëren van een OrderedDict-object
from collections import OrderedDict
# het creëren van een eenvoudige dict
my_dict = {'kiwi': 4, 'apple': 5, 'cat': 3}
# het creëren van een lege geordende dict
ordered_dict = OrderedDict()
print(ordered_dict)
# het creëren van een geordende dict uit een dict
ordered_dict = OrderedDict(my_dict)
print(ordered_dict)
Output:
OrderedDict()
OrderedDict([('kiwi', 4), ('apple', 5), ('cat', 3)])
Toevoegen, vervangen, verwijderen van items uit OrderedDict
# elementen toevoegen aan dict
ordered_dict['dog'] = 3
# een dict-sleutelwaarde vervangen
ordered_dict['kiwi'] = 10
print(ordered_dict)
# verwijderen en toevoegen van een waarde
ordered_dict.pop('kiwi')
print(ordered_dict)
ordered_dict['kiwi'] = 4
print(ordered_dict)
Output:
OrderedDict([('kiwi', 10), ('apple', 5), ('cat', 3), ('dog', 3)])
OrderedDict([('apple', 5), ('cat', 3), ('dog', 3)])
OrderedDict([('apple', 5), ('cat', 3), ('dog', 3), ('kiwi', 4)])
OrderedDict move_to_end voorbeeld
# appel naar het einde verplaatsen en hond naar het begin
ordered_dict.move_to_end('apple')
ordered_dict.move_to_end('dog', False)
print(ordered_dict)
Output:
OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4), ('apple', 5)])
OrderedDict popitem voorbeeld
# laatste item verwijderen
item = ordered_dict.popitem(True)
print(item)
print(ordered_dict)
Output:
('apple', 5)
OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4)])
Omgekeerde iteratie van OrderedDict
# omgekeerde iteratie
for item in reversed(ordered_dict):
print(item)
Output:
kiwi
cat
dog
Voorbeeld van gelijkheidstests met OrderedDict
# gelijkheidstests
d1 = {'a': 'A', 'b': 'B'}
d2 = {'b': 'B', 'a': 'A'}
od1 = OrderedDict({'a': 'A', 'b': 'B'})
od2 = OrderedDict({'b': 'B', 'a': 'A'})
print(d1 == d2)
print(od1 == od2)
print(d1 == od1)
Uitvoer:
True
False
True
Je kunt de volledige voorbeeldcode downloaden van onze GitHub-opslagplaats.
Referentie: Python-documentatie
Source:
https://www.digitalocean.com/community/tutorials/python-ordereddict