Skip to main content

OrderedDict

OrderedDict adalah struktur data yang disediakan Python melalui module collections untuk menyimpan data dalam bentuk key-value sekaligus mempertahankan urutan item.

Konsep ini berkaitan erat dengan dictionary karena OrderedDict memiliki cara penggunaan yang hampir sama dengan dict.


1. Apa Itu OrderedDict?

OrderedDict merupakan class dari module:

collections

Untuk menggunakannya, kita perlu melakukan import:

from collections import OrderedDict

Kemudian kita dapat membuat OrderedDict:

user = OrderedDict()

user["name"] = "Andi"
user["age"] = 25
user["city"] = "Palu"

print(user)

Hasil:

OrderedDict([('name', 'Andi'), ('age', 25), ('city', 'Palu')])

Urutan item dipertahankan sesuai dengan urutan ketika item tersebut dimasukkan.


2. Mengapa Ada OrderedDict?

Pada Python versi lama, dict tidak menjamin urutan item ketika melakukan iterasi.

Karena itu, Python menyediakan:

OrderedDict

untuk kebutuhan yang secara khusus membutuhkan struktur dictionary dengan perilaku urutan yang terjamin.

Contohnya:

from collections import OrderedDict

data = OrderedDict()

data["a"] = 1
data["b"] = 2
data["c"] = 3

Urutannya akan tetap:

a
b
c

3. Dictionary pada Python Modern

Pada Python modern, dict standar sudah mempertahankan urutan insertion.

Contohnya:

data = {}

data["a"] = 1
data["b"] = 2
data["c"] = 3

print(data)

Urutannya tetap:

a
b
c

Karena itu, untuk sebagian besar kebutuhan pemrograman modern, kita cukup menggunakan:

dict

dan tidak perlu menggunakan OrderedDict.


4. Perbedaan dict dan OrderedDict

KarakteristikdictOrderedDict
Menyimpan key-valueYaYa
Mempertahankan insertion orderYaYa
Tersedia langsungYaTidak
Perlu importTidakYa
ModuleBuilt-incollections
Fitur khusus pengelolaan urutanTerbatasLebih lengkap

Contoh dict:

data = {
"a": 1,
"b": 2
}

Contoh OrderedDict:

from collections import OrderedDict

data = OrderedDict()

data["a"] = 1
data["b"] = 2

5. Mengakses Data

Cara mengakses data pada OrderedDict sama seperti dictionary biasa.

Contohnya:

from collections import OrderedDict

user = OrderedDict()

user["name"] = "Andi"
user["age"] = 25

print(user["name"])

Hasil:

Andi

6. Menggunakan OrderedDict Langsung

Kita juga dapat membuat OrderedDict dengan data awal.

Contohnya:

from collections import OrderedDict

user = OrderedDict([
("name", "Andi"),
("age", 25),
("city", "Palu")
])

print(user)

Hasil:

OrderedDict([('name', 'Andi'), ('age', 25), ('city', 'Palu')])

Urutan item mengikuti urutan saat data diberikan.


7. Mempertahankan Urutan Insertion

Misalnya:

from collections import OrderedDict

data = OrderedDict()

data["first"] = 1
data["second"] = 2
data["third"] = 3

Jika kita melakukan iterasi:

for key in data:
print(key)

Hasil:

first
second
third

Urutan tersebut sesuai dengan urutan ketika item dimasukkan.


8. Memindahkan Item ke Akhir dengan move_to_end()

Salah satu fitur yang membedakan OrderedDict adalah method:

move_to_end()

Method ini dapat digunakan untuk memindahkan sebuah item ke bagian akhir.

Contohnya:

from collections import OrderedDict

data = OrderedDict()

data["a"] = 1
data["b"] = 2
data["c"] = 3

data.move_to_end("a")

print(data)

Hasil:

OrderedDict([('b', 2), ('c', 3), ('a', 1)])

Awalnya:

a → b → c

Setelah:

data.move_to_end("a")

menjadi:

b → c → a

9. Memindahkan Item ke Awal

move_to_end() juga memiliki parameter:

last=False

yang dapat digunakan untuk memindahkan item ke bagian awal.

Contohnya:

from collections import OrderedDict

data = OrderedDict()

data["a"] = 1
data["b"] = 2
data["c"] = 3

data.move_to_end("c", last=False)

print(data)

Hasil:

OrderedDict([('c', 3), ('a', 1), ('b', 2)])

Urutannya berubah dari:

a → b → c

menjadi:

c → a → b

10. Menghapus Item Terakhir dengan popitem()

OrderedDict juga menyediakan method:

popitem()

yang dapat digunakan untuk menghapus dan mengembalikan item.

Secara default, item terakhir akan dihapus.

Contohnya:

from collections import OrderedDict

data = OrderedDict()

data["a"] = 1
data["b"] = 2
data["c"] = 3

item = data.popitem()

print(item)
print(data)

Hasil:

('c', 3)
OrderedDict([('a', 1), ('b', 2)])

11. Menghapus Item Pertama

Dengan memberikan:

last=False

kita dapat menghapus item pertama.

Contohnya:

from collections import OrderedDict

data = OrderedDict()

data["a"] = 1
data["b"] = 2
data["c"] = 3

item = data.popitem(last=False)

print(item)
print(data)

Hasil:

('a', 1)
OrderedDict([('b', 2), ('c', 3)])

12. Kapan Menggunakan OrderedDict?

Dalam kode Python modern, penggunaan dict biasa sudah cukup untuk mempertahankan insertion order.

Namun, OrderedDict masih berguna ketika kita membutuhkan operasi khusus yang berkaitan dengan urutan, seperti:

move_to_end()

atau:

popitem(last=False)

Contoh penggunaan yang mungkin:

  • Struktur data berbasis urutan.
  • Implementasi cache sederhana.
  • Pengelolaan data yang sering dipindahkan posisinya.
  • Kode lama (legacy code) yang memang menggunakan OrderedDict.
  • Situasi yang membutuhkan API khusus dari OrderedDict.

13. Contoh Sederhana

from collections import OrderedDict

tasks = OrderedDict()

tasks["task1"] = "Belajar Python"
tasks["task2"] = "Mengerjakan latihan"
tasks["task3"] = "Membuat project"

print(tasks)

Hasil:

OrderedDict([
('task1', 'Belajar Python'),
('task2', 'Mengerjakan latihan'),
('task3', 'Membuat project')
])

Kita dapat memindahkan task:

tasks.move_to_end("task1")

Sekarang urutannya menjadi:

task2
task3
task1

14. OrderedDict Bukan Sekadar Dictionary yang Terurut

Pada Python modern, anggapan bahwa:

dict = tidak terurut
OrderedDict = terurut

sudah tidak tepat.

Dictionary modern:

data = {
"a": 1,
"b": 2,
"c": 3
}

juga mempertahankan insertion order.

Perbedaan pentingnya adalah OrderedDict menyediakan beberapa operasi khusus untuk memanipulasi urutan item.


15. Ringkasan

FiturdictOrderedDict
Key-valueYaYa
Mempertahankan insertion orderYaYa
Perlu importTidakYa
move_to_end()TidakYa
popitem(last=False)TidakYa
Cocok untuk kebutuhan dictionary umumYaTidak selalu

Untuk dictionary biasa:

user = {
"name": "Andi",
"age": 25
}

Sedangkan untuk OrderedDict:

from collections import OrderedDict

user = OrderedDict()

user["name"] = "Andi"
user["age"] = 25

Kesimpulan

OrderedDict adalah struktur data dari module collections yang menyimpan data dalam bentuk key-value dan menyediakan operasi tambahan untuk mengelola urutan item.

Pada Python modern, dict standar sudah mempertahankan insertion order, sehingga OrderedDict tidak lagi diperlukan hanya untuk mendapatkan dictionary yang terurut.

Namun, OrderedDict masih berguna ketika kita membutuhkan operasi khusus seperti:

move_to_end()

dan:

popitem(last=False)

Konsep utama:

dict

Dictionary umum dengan insertion order

OrderedDict

Dictionary dengan fitur khusus untuk mengelola urutan
tip

Untuk kode Python modern, gunakan dict sebagai pilihan default. Pelajari OrderedDict agar memahami kode Python lama dan kasus yang membutuhkan manipulasi urutan secara khusus.