Dalam matematika, ada himpunan dan himpunan terurut (osets).
- set : wadah tak berurutan dari elemen unik (Diimplementasikan)
- oset : wadah terurut dari elemen unik (NotImplemented)
Di Python, hanya set yang diimplementasikan secara langsung. Kita dapat meniru osets dengan tombol dict biasa ( 3.7+ ).
Diberikan
a = [1, 2, 20, 6, 210, 2, 1]
b = {2, 6}
Kode
oset = dict.fromkeys(a).keys()
# dict_keys([1, 2, 20, 6, 210])
Demo
Replikasi dihapus, urutan penyisipan dipertahankan.
list(oset)
# [1, 2, 20, 6, 210]
Operasi set-like pada tombol dikt.
oset - b
# {1, 20, 210}
oset | b
# {1, 2, 5, 6, 20, 210}
oset & b
# {2, 6}
oset ^ b
# {1, 5, 20, 210}
Detail
Catatan: struktur tak berurutan tidak menghalangi elemen berurutan. Sebaliknya, ketertiban yang terjaga tidak dijamin. Contoh:
assert {1, 2, 3} == {2, 3, 1} # sets (order is ignored)
assert [1, 2, 3] != [2, 3, 1] # lists (order is guaranteed)
Seseorang mungkin senang mengetahui bahwa list dan multiset (mset) adalah dua struktur data matematika yang lebih menarik:
- daftar : wadah berurutan dari elemen yang memungkinkan replikasi (Diimplementasikan)
- mset : wadah elemen tak berurutan yang memungkinkan replikasi (NotImplemented) *
Ringkasan
Container | Ordered | Unique | Implemented
----------|---------|--------|------------
set | n | y | y
oset | y | y | n
list | y | n | y
mset | n | n | n*
* Sebuah multiset dapat secara tidak langsung ditiru dengan collections.Counter()
, pemetaan multiplisitas seperti diktik (hitungan).