Cara menukar posisi dalam kamus python

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)

Mahkota

Sortir diskusi

Langganan

Cara menukar posisi dalam kamus python

Pengguna Tepercaya PribadiBuat template

Template memungkinkan Anda dengan cepat menjawab FAQ atau menyimpan cuplikan untuk digunakan kembali

Kirim Pratinjau Tutup

Ciutkan Perluas

 

Cara menukar posisi dalam kamus python

puisi

puisi

Cara menukar posisi dalam kamus python
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 Suka

Beberapa komentar mungkin hanya dapat dilihat oleh pengunjung yang masuk. Masuk untuk melihat semua komentar

Kode Etik Laporkan penyalahgunaan

Yakin 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 = 2
2 menghasilkan nilai
# The first variable
variable_one = 1

# The second variable
variable_two = 2
3 dan
# The first variable
variable_one = 1

# The second variable
variable_two = 2
4 menghasilkan nilai
# The first variable
variable_one = 1

# The second variable
variable_two = 2
5. 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 = 2
2 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 = 2
2 ke
# The first variable
variable_one = 1

# The second variable
variable_two = 2
4, tidak ada perubahan karena nilai
# The first variable
variable_one = 1

# The second variable
variable_two = 2
4 baru saja ditetapkan ke
# The first variable
variable_one = 1

# The second variable
variable_two = 2
2. 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 = 2
2 dan
# The first variable
variable_one = 1

# The second variable
variable_two = 2
4 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 = 2
    2 dan
    # The first variable
    variable_one = 1
    
    # The second variable
    variable_two = 2
    4
  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 = 2
    2) ditetapkan ke nilai pertama pada RHS (
    # The first variable
    variable_one = 1
    
    # The second variable
    variable_two = 2
    4)

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 here
8 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 here
9. 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 here
9 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 here
8 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 here
9 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 cara mengubah posisi kunci dalam kamus dengan Python?

Tugas ini diselesaikan dalam 3 langkah. .
Kamus pertama diubah menjadi pasangan nilai kunci yang setara dalam bentuk tupel,
Operasi swap selanjutnya dilakukan dengan cara Pythonic
Terakhir, daftar tupel diubah kembali ke kamus, dalam format yang diperlukan

Bisakah Anda menyusun ulang kamus dengan Python?

Nah, seperti python 3. 7, kamus mengingat urutan item yang dimasukkan juga. Jadi kita juga dapat mengurutkan kamus menggunakan fungsi sortir() bawaan python . Sama seperti dengan iterable lainnya, kita dapat mengurutkan kamus berdasarkan kriteria yang berbeda tergantung pada argumen kunci dari fungsi sortir().

Bagaimana cara membalik urutan kamus dalam kamus?

Gunakan dict. items() untuk mendapatkan daftar pasangan tupel dari d dan mengurutkannya menggunakan fungsi lambda dan diurutkan(). Gunakan dict() untuk mengonversi daftar yang diurutkan kembali ke kamus. Gunakan parameter terbalik di sort() untuk mengurutkan kamus dalam urutan terbalik, berdasarkan argumen kedua .