Python GeordendeDict

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 argument last, als dit is ingesteld op True, 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 argument last, als het ingesteld is op False, 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