Itu bagus dan semuanya. Tetapi bagaimana jika Anda ingin membalik seluruh kamus?
Tukar nilai
Anda dapat dengan mudah menukar pasangan kunci, kamus dengan Python, dengan satu liner
dict = {value:key for key, value in dict.items()}
Jadi dalam praktiknya Anda dapat memiliki sesuatu seperti ini
dict = {'a': 1, 'b': 2, 'c': 3} print(dict) dict = {value:key for key, value in dict.items()} print(dict) _
Ini akan menghasilkan
{'a': 1, 'c': 3, 'b': 2} {1: 'a', 2: 'b', 3: 'c'}
Jadi satu baris
dict = {value:key for key, value in dict.items()}
membalik seluruh kamus. Trik yang bagus. )
Belajar Python?
- https. //dasar-dasar python. org/
- https. // bahasa pemrograman python. com/
Komentar teratas (2)
MahkotaSortir diskusi
Langganan
Pengguna Tepercaya PribadiBuat template
Template memungkinkan Anda dengan cepat menjawab FAQ atau menyimpan cuplikan untuk digunakan kembali
Kirim Pratinjau Tutup
Ciutkan Perluas
puisi
puisi
Mengikuti
Perangkat lunak seperti mimpi dibuat. Saya kebanyakan mengoceh tentang kinerja, kerumitan yang tidak perlu, privasi, dan pengumpulan data
Bergabung
2 Februari 2017
Menu drop down
- Bersembunyi
Perlu diingat bahwa ini bisa gagal jika nilainya tidak dapat di-hash
>>> dict = { 1: [2] } >>> {value:key for key, value in dict.items()} Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 1, in <dictcomp> TypeError: unhashable type: 'list' _
-)
Semua struktur data yang dapat diubah dalam Python tidak dapat di-hash
Suka komentar. Suka komentar. 2 suka SukaBeberapa komentar mungkin hanya dapat dilihat oleh pengunjung yang masuk. Masuk untuk melihat semua komentar
Kode Etik • Laporkan penyalahgunaanYakin ingin menyembunyikan komentar ini?
Objek kamus Python adalah cara mudah untuk menyimpan pasangan kunci-nilai. Dicts menyediakan metode kemudahan untuk akses data tetapi membiarkan pengembang menggunakan cara mereka sendiri untuk operasi. Misalnya, untuk menukar posisi dua nilai dalam kamus python, seseorang harus merancang pendekatan khusus - tidak ada metode 'tukar'
Daftar isi
Ini bukanlah tugas yang sulit dan dapat didekati seperti logika swap dasar lainnya yang diterapkan di banyak bahasa. Namun, Python menyediakan memang memungkinkan seseorang untuk menyederhanakan sintaks swap — termasuk di antara nilai-nilai dalam objek dict. Tutorial singkat ini akan melihat beberapa pendekatan dan kasus penggunaan untuk menukar nilai dalam Python dict
TL;DR
Urutan evaluasi Python memungkinkan sintaks yang disederhanakan untuk membuat swap. Item kamus dapat memiliki nilai yang ditukar menggunakan sintaks yang sama, sehingga kunci secara konseptual seperti variabel. Kode contoh ini memberikan demonstrasi
# define key value pairs d = {"a": 1, "b": 2, "c": 3} # swap values using Pythonic syntax d["a"], d["b"] = d["b"], d["a"] # result {'a': 2, 'b': 1, 'c': 3}Pengenalan Cepat. Dasar-dasar Pertukaran
Swapping adalah konsep dasar dalam ilmu komputer. Bagaimana seseorang memilih untuk menukar nilai yang diberikan ke satu variabel dengan nilai yang diberikan ke variabel kedua adalah urutan logis yang didekati oleh banyak program. Ini mudah - tetapi pada awalnya dapat menyebabkan kebingungan bagi mereka yang baru memprogram. Pertimbangkan skenario berikut
# The first variable variable_one = 1 # The second variable variable_two = 2_Di sini kita memiliki dua variabel; . Masing-masing memiliki nilai integer unik yang ditetapkan. Niat kami adalah untuk mengubahnya sedemikian rupa sehingga # The first variable variable_one = 1 # The second variable variable_two = 22 menghasilkan nilai # The first variable variable_one = 1 # The second variable variable_two = 23 dan # The first variable variable_one = 1 # The second variable variable_two = 24 menghasilkan nilai # The first variable variable_one = 1 # The second variable variable_two = 25. Kami dapat dengan mudah menetapkan nilai # The first variable variable_one = 1 # The second variable variable_two = 2_4 ke # The first variable variable_one = 1 # The second variable variable_two = 22 tetapi di situlah masalahnya dimulai. Pertimbangkan yang berikut ini
Saat melakukan penukaran kedua — menetapkan nilai # The first variable variable_one = 1 # The second variable variable_two = 22 ke # The first variable variable_one = 1 # The second variable variable_two = 24, tidak ada perubahan karena nilai # The first variable variable_one = 1 # The second variable variable_two = 24 baru saja ditetapkan ke # The first variable variable_one = 1 # The second variable variable_two = 22. Bagian kedua dari kode ini setara dengan mengatakan # swap first value variable_1 = variable_2 # swap second value variable_2 = variable_1 # <--------- keeps the same value!2. Jelas, ini bukan "menukar" apa pun. Solusinya adalah dengan menggunakan nilai sementara seperti itu
# create a temporary value tmp = variable_1 # make first swap in same fashion variable_1 = variable_2 # make second swap, using tmp value variable_2 = tmp # <------- swap works hereDalam pendekatan ini, salinan # The first variable variable_one = 1 # The second variable variable_two = 2_2 dibuat sebelum dipindahkan ke nilai lain. Ini menyediakan sarana untuk mengakses nilai awal setelah fakta sedemikian rupa sehingga tugas kita selanjutnya berfungsi sebagaimana mestinya. Ini adalah konsep logika dasar dalam ilmu komputer dan pemrograman. Mari pertimbangkan cara menerapkan ini pada pertukaran dua nilai dict dengan Python
Tukar Dua Nilai Dict
Di sini kami menerapkan pendekatan penukaran menggunakan nilai sementara untuk menukar nilai dua entri dalam objek Python dict. Pertimbangkan kode berikut
# define key value pairs dict_items = {"a": 1, "b": 2, "c": 3} # swap values of a and b tmp = dict_items["a"] # Make first swap dict_items["a"] = dict_items["b"] # Make second, using tmp value dict_items["b"] = tmp # View output print(dict_items) {'a': 2, 'b': 1, 'c': 3}Seperti yang diharapkan, menerapkan metode yang sama dengan menggunakan nilai sementara membuat prosedur pertukaran ini berjalan lancar. Python dirancang sedemikian rupa sehingga urutan evaluasi ekspresi memungkinkan kita untuk menyederhanakan operasi ini
Pertukaran Khusus Python
Python mendefinisikan urutan interpretasi ekspresi dan pernyataan penugasan. Sebelum kita mendalami cara kerja swapping di Python, mari kita lihat sintaksnya beraksi
# Define two variables variable_1 = 1 variable_2 = 2 # swap values Pythonically variable_1, variable_2 = variable_2, variable_1 # View result print("variable_1:", variable_1) print("variable_2:", variable_2) variable_1: 2 variable_2: 1Di sini nilai # The first variable variable_one = 1 # The second variable variable_two = 22 dan # The first variable variable_one = 1 # The second variable variable_two = 24 ditukar tanpa menggunakan variabel sementara. Tapi, bagaimana bisa?
- Mengevaluasi sisi kanan (RHS) ekspresi, membuat Tuple dari dua elemen dalam memori untuk nilai # The first variable variable_one = 1 # The second variable variable_two = 22 dan # The first variable variable_one = 1 # The second variable variable_two = 24
- Mengevaluasi sisi kiri (LHS) dari ekspresi, menugaskan tupel nilai yang disimpan dalam memori, dengan nama terkait, nama di LHS
- Membongkar tupel dalam memori sehingga argumen pertama dari LHS (# The first variable variable_one = 1 # The second variable variable_two = 22) ditetapkan ke nilai pertama pada RHS (# The first variable variable_one = 1 # The second variable variable_two = 24)
Penting untuk dicatat bahwa Python "under-the-hood" menggunakan konsep variabel sementara yang sama seperti yang telah kita gunakan sampai saat ini. "Gula sintaksis" ini hanya membuat pengalaman pemrograman menjadi lebih sederhana. Tidak ada yang menghindari persyaratan logis pada tingkat absolut. Dengan mengingat metode ini, mari kita pertimbangkan bagaimana menukar dua nilai kamus dengan Python lagi
Tukar Dua Nilai Dict Secara Python
Sekali lagi, kami memiliki objek kamus dengan beberapa pasangan kunci-nilai. Sekali lagi, niat kami adalah untuk menukar nilai yang ditetapkan ke dua kunci sedemikian rupa sehingga secara efektif "ditukar" setelah selesai. Perhatikan contoh kode berikut
# define key value pairs d = {"a": 1, "b": 2, "c": 3} # swap Pythonically d["a"], d["b"] = d["b"], d["a"] # view result print("Result:", d) Result: {'a': 2, 'b': 1, 'c': 3}Di sini kita melihat cara Pythonic bertukar bekerja dalam batas-batas objek dict seperti halnya dengan objek variabel non-dict. Ini efektif untuk menukar nilai dua item dict tetapi bagaimana jika kita ingin menukar posisi dua item dalam kamus Python?
Tukar Posisi Dua Item dalam Python Dict
Sampai saat ini, kami telah menukar nilai variabel. Dalam kasus menukar nilai dari dua entri kunci kamus, konsep yang sama berlaku. kami memiliki dua variabel (dict_ item dalam kasus ini) yang kami lakukan operasi penugasan
Untuk menukar urutan sebenarnya dari dua item dalam kamus, kami masih melakukan operasi penetapan tetapi, dalam hal ini, "penugasan" adalah urutan indeks kamus. Masalahnya di sini adalah objek kamus tidak memiliki urutan yang diindeks.
Untuk “menukar” posisi dua item dict, pertama-tama kita harus mengonversi objek dict menjadi objek yang dapat dipesan, seperti # create a temporary value tmp = variable_1 # make first swap in same fashion variable_1 = variable_2 # make second swap, using tmp value variable_2 = tmp # <------- swap works here8 atau # create a temporary value tmp = variable_1 # make first swap in same fashion variable_1 = variable_2 # make second swap, using tmp value variable_2 = tmp # <------- swap works here9. Mengingat dict objek memiliki key-value pair, objek # create a temporary value tmp = variable_1 # make first swap in same fashion variable_1 = variable_2 # make second swap, using tmp value variable_2 = tmp # <------- swap works here9 sangat cocok. Pertimbangkan pendekatan berikut
# define key value pairs d = {"a": 1, "b": 2, "c": 3} # convert to a tuple t = list(d.items()) print("Tuples:", t) >>> Tuples: [('a', 1), ('b', 2), ('c', 3)] # swap order via index values t[0], t[1] = t[1], t[0] print("Swapped:", t) Swapped: [('b', 2), ('a', 1), ('c', 3)] # Convert back to dictionary d = dict(t) print("Result:", d) Result: {'b': 2, 'a': 1, 'c': 3}Di sini kita melihat konversi objek dict yang tidak diindeks # define key value pairs dict_items = {"a": 1, "b": 2, "c": 3} # swap values of a and b tmp = dict_items["a"] # Make first swap dict_items["a"] = dict_items["b"] # Make second, using tmp value dict_items["b"] = tmp # View output print(dict_items) {'a': 2, 'b': 1, 'c': 3}3 menjadi objek # create a temporary value tmp = variable_1 # make first swap in same fashion variable_1 = variable_2 # make second swap, using tmp value variable_2 = tmp # <------- swap works here8 yang diindeks dari # create a temporary value tmp = variable_1 # make first swap in same fashion variable_1 = variable_2 # make second swap, using tmp value variable_2 = tmp # <------- swap works here9 pasang # define key value pairs dict_items = {"a": 1, "b": 2, "c": 3} # swap values of a and b tmp = dict_items["a"] # Make first swap dict_items["a"] = dict_items["b"] # Make second, using tmp value dict_items["b"] = tmp # View output print(dict_items) {'a': 2, 'b': 1, 'c': 3}6 sehingga "swap" berada di antara nilai indeks. Pertukaran ini terjadi dengan sintaks ekspresi urutan penugasan yang sama, tepat di luar objek dict. Kemudian, nilai yang ditukar dengan benar diubah kembali menjadi objek dict
Penafian
Pendekatan ini menarik tetapi tidak optimal. Jika urutan nilai dalam objek dict_ perlu diubah, ada kemungkinan kuat bahwa struktur data lain seperti daftar atau tuple adalah pilihan yang lebih baik untuk menyimpan referensi ke data. Ada banyak struktur data di luar sana, masing-masing lebih cocok untuk situasi tertentu
Pikiran Akhir
Python memungkinkan pertukaran data didekati dengan sintaks yang diminimalkan dibandingkan dengan bahasa lain. Kami telah menunjukkan cara menukar dua nilai di seluruh artikel ini, tetapi sintaksnya meluas ke argumen sebanyak yang diinginkan. Misalnya, # Define two variables variable_1 = 1 variable_2 = 2 # swap values Pythonically variable_1, variable_2 = variable_2, variable_1 # View result print("variable_1:", variable_1) print("variable_2:", variable_2) variable_1: 2 variable_2: 1_0 adalah sintaks nilai sepenuhnya
Objek dict Python adalah alat yang sangat kuat ketika diterapkan dengan tepat tetapi, seperti struktur data seperti tabel hash lainnya, tidak ideal untuk menyimpan data sedemikian rupa sehingga urutannya penting (atau dapat diprediksi). ) Namun demikian, melakukan tindakan seperti menukar atau bahkan menyortir kamus Python dimungkinkan dan, dalam keadaan yang tepat, mungkin sesuai