Pembaruan: pada Python 3.7, urutan penyisipan dipertahankan, sehingga Anda tidak perlu di OrderedDictsini. Anda dapat menggunakan pendekatan di bawah ini dengan normaldict
Diubah dalam versi 3.7: Urutan kamus dijamin menjadi urutan penyisipan. Perilaku ini merupakan detail implementasi dari CPython dari 3.6.
sumber
Python 3.6 dan sebelumnya *
Jika Anda berbicara tentang reguler dict, maka "kunci pertama" tidak berarti apa-apa. Kunci tidak dipesan dengan cara apa pun yang dapat Anda andalkan. Jika Anda mengulanginya, dictkemungkinan besar Anda tidak akan mendapatkan "banana"hal pertama yang Anda lihat.
Jika Anda perlu menjaga semuanya, maka Anda harus menggunakan OrderedDictdan bukan hanya kamus biasa.
import collections
prices = collections.OrderedDict([
("banana", 4),
("apple", 2),
("orange", 1.5),
("pear", 3),
])
Jika Anda kemudian ingin melihat semua kunci agar Anda bisa melakukannya dengan mengulanginya
for k in prices:
print(k)
Anda bisa, atau memasukkan semua kunci ke dalam daftar dan kemudian bekerja dengan itu
ks = list(prices)
print(ks[0]) # will print "banana"
Cara yang lebih cepat untuk mendapatkan elemen pertama tanpa membuat daftar adalah memanggil nextiterator. Ini tidak menggeneralisasi dengan baik ketika mencoba untuk mendapatkan nthelemen
>>> next(iter(prices))
'banana'
* CPython telah menjamin pesanan penyisipan sebagai detail implementasi dalam 3.6.