Kode:
d = {'a': 0, 'b': 1, 'c': 2}
l = d.keys()
print l
Ini cetakan ['a', 'c', 'b']
. Saya tidak yakin bagaimana metode keys()
menentukan urutan kata kunci dalam l . Namun, saya ingin bisa mendapatkan kembali kata kunci dalam urutan yang "benar". Urutan yang tepat tentu saja akan membuat daftar ['a', 'b', 'c']
.
python
dictionary
persegi panjang
sumber
sumber
Jawaban:
Anda dapat menggunakan OrderedDict (membutuhkan Python 2.7) atau yang lebih tinggi.
Juga, perhatikan itu
OrderedDict({'a': 1, 'b':2, 'c':3})
tidak akan berfungsi karenadict
Anda membuat dengan{...}
telah melupakan urutan elemen. Sebaliknya, Anda ingin menggunakanOrderedDict([('a', 1), ('b', 2), ('c', 3)])
.Seperti yang disebutkan dalam dokumentasi, untuk versi yang lebih rendah dari Python 2.7, Anda dapat menggunakan resep ini .
sumber
Python 3.7+
Dalam Python 3.7.0 , sifat pelestarian urutan penyisipan
dict
objek telah dinyatakan sebagai bagian resmi dari spesifikasi bahasa Python. Oleh karena itu, Anda dapat bergantung padanya.Python 3.6 (CPython)
Mulai Python 3.6, untuk implementasi CPython dari Python, kamus mempertahankan urutan penyisipan secara default. Ini dianggap sebagai detail implementasi; Anda tetap harus menggunakan
collections.OrderedDict
jika Anda menginginkan urutan penyisipan yang dijamin di seluruh implementasi Python lainnya.Python> = 2.7 dan <3.6
Gunakan
collections.OrderedDict
kelas ketika Anda membutuhkandict
yang mengingat urutan item yang dimasukkan.sumber
Gunakan fungsi yang diurutkan , yang mengurutkan iterable yang diteruskan.
The
.keys()
Metode mengembalikan kunci dalam urutan yang sewenang-wenang.sumber
Dari http://docs.python.org/tutorial/datastructures.html :
"Metode keys () dari objek kamus mengembalikan daftar semua kunci yang digunakan dalam kamus, dalam urutan arbitrer (jika Anda ingin itu diurutkan, cukup terapkan fungsi diurutkan () ke sana)."
sumber
Cukup urutkan daftar saat Anda ingin menggunakannya.
sumber
Meskipun urutannya tidak masalah karena kamusnya adalah hashmap. Itu tergantung pada urutan bagaimana itu didorong:
output:
untuk string abbc, kuncinya adalah dict_keys (['a', 'b', 'c'])
untuk string cbab, kuncinya adalah dict_keys (['c', 'b', 'a'])
sumber