Saya agak bingung mengenai struktur data dalam python; ()
,, []
dan {}
. Saya mencoba mengurutkan daftar sederhana, mungkin karena saya tidak dapat mengidentifikasi jenis data yang saya gagal untuk mengurutkannya.
Daftar saya sederhana: ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
Pertanyaan saya adalah tipe data apa ini, dan bagaimana cara mengurutkan kata berdasarkan abjad?
python
list
sorting
alphabetical
icypy
sumber
sumber
[]
melampirkan tipe data bawaanlist
, (lihat tutorialspoint.com/python/python_lists.htm ). Daftar hanyalah sekelompok nilai (mereka dapat berisi objek yang dapat diulang-yaitu daftar bersarang).()
membungkus builtintuple
. Mereka tidak berubah (tidak bisa diubah). (lihat tutorialspoint.com/python/python_tuples.htm ). Dan{}
melampirkan builtindictionary
. Paralel dengan kamus (untuk kata-kata), di mana 'kunci' akan menjadi kata dan 'nilai adalah definisi. (lihat tutorialspoint.com/python/python_dictionary.htm ).Jawaban:
[]
menunjukkan daftar ,()
menunjukkan tupel dan{}
menunjukkan kamus . Anda harus melihat pada tutorial Python resmi karena ini adalah dasar-dasar pemrograman di Python.Yang Anda miliki adalah daftar string. Anda dapat mengurutkannya seperti ini:
Seperti yang Anda lihat, kata-kata yang dimulai dengan huruf besar mendapatkan preferensi daripada yang dimulai dengan huruf kecil. Jika Anda ingin mengurutkannya secara independen, lakukan ini:
Anda juga dapat mengurutkan daftar dalam urutan terbalik dengan melakukan ini:
Harap dicatat: Jika Anda bekerja dengan Python 3, maka
str
adalah tipe data yang benar untuk setiap string yang berisi teks yang bisa dibaca manusia. Namun, jika Anda masih perlu bekerja dengan Python 2, maka Anda mungkin berurusan dengan string unicode yang memiliki tipe dataunicode
di Python 2, dan tidakstr
. Dalam kasus seperti itu, jika Anda memiliki daftar string unicode, Anda harus menuliskey=unicode.lower
bukankey=str.lower
.sumber
find_one()
hasil dari database MongoDB, saya mendapatkan error:descriptor 'lower' requires a 'str' object but received a 'unicode'
. Hasilnya adalah sebuah array dari string dan dilaksanakan seperti ini:results['keywords'] = sorted(keywords['keywords'], key=str.lower)
. Adakah yang tahu bagaimana menyelesaikan ini?key=unicode.lower
alih-alihkey=str.lower
. Ini karena Anda berurusan dengan string unicode, bukan string byte. Silakan merujuk ke Unicode HOWTO resmi untuk informasi lebih lanjut tentang ini, terutama untuk perbedaan masing-masing antara Python 2 dan 3.Python memiliki fungsi bawaan yang disebut
sorted
, yang akan memberi Anda daftar diurutkan dari setiap iterable yang Anda beri makan (seperti daftar ([1,2,3]
); dict ({1:2,3:4}
, meskipun itu hanya akan mengembalikan daftar kunci yang diurutkan; set ({1,2,3,4
) ( ; atau tuple ((1,2,3,4)
)).Daftar juga memiliki
sort
metode yang akan melakukan sortir di tempat (x.sort () mengembalikan Tidak ada tetapi mengubah objek x).Keduanya juga mengambil
key
argumen, yang seharusnya bisa dipanggil (fungsi / lambda) yang dapat Anda gunakan untuk mengubah apa yang harus disortir.Misalnya, untuk mendapatkan daftar
(key,value)
-pairs dari dict yang diurutkan berdasarkan nilai Anda dapat menggunakan kode berikut:sumber
Anda berurusan dengan daftar python, dan mengurutkannya semudah melakukan ini.
sumber
Anda dapat menggunakan
sorted
fungsi bawaan.sumber
ListName.sort()
akan mengurutkannya berdasarkan abjad. Anda dapat menambahkanreverse=False/True
tanda kurung untuk membalik urutan item:ListName.sort(reverse=False)
sumber
sumber