Bisakah saya menukar kunci dan nilai dalam kamus python?

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

# swap first value variable_1 = variable_2 # swap second value variable_2 = variable_1 # <--------- keeps the same value!

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 here

Dalam 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: 1

Di 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?

  1. 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
  2. Mengevaluasi sisi kiri (LHS) dari ekspresi, menugaskan tupel nilai yang disimpan dalam memori, dengan nama terkait, nama di LHS
  3. 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) tempat kami melakukan 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

Bagaimana Anda membalik kunci dan nilai dengan python?

Tukar kunci dan nilai dalam kamus Python .
dict = {'a'. 1, 'b'. 2, 'c'. 3}.
cetak(dikt['b']).
dict = {nilai. kunci demi kunci, nilai dalam dict. item()}.
dict = {'a'. 1, 'b'. 2, 'c'. 3} cetak(dict) dict = {nilai. kunci demi kunci, nilai dalam dict. item()} cetak(dict).
{'sebuah'. 1, 'c'. 3, 'b'. 2} {1. 'a', 2. 'b', 3. 'c'}

Bagaimana Anda membalikkan kunci dan nilai dalam kamus dengan python?

5 Cara Terbaik untuk Membalik Kamus Python .
Metode 1. Gunakan Pemahaman Kamus
Metode 2. Gunakan dict()
Metode 3. Gunakan Gunakan dict() dan peta()
Metode 4. Gunakan dict() dan zip()
Metode 5. Gunakan Lambda
Bonus. Membalikkan Kamus yang berisi Duplikat

Bisakah kita mengubah kunci dalam kamus?

Kunci dalam kamus hanya dapat digunakan satu kali . Jika digunakan lebih dari sekali, seperti yang Anda lihat sebelumnya, itu hanya akan mengganti nilainya. 00. 19 Kunci harus tidak dapat diubah—artinya, tidak dapat diubah.

Postingan terbaru

LIHAT SEMUA