Kami, sebagai developer, sering kali membutuhkan konversi dari satu tipe data ke tipe data lainnya. Salah satu jenis konversi tersebut adalah konversi kamus daftar ke daftar kamus .
Show Mari kita pahami ini dulu dengan mengambil contoh. Di bawah ini adalah kamus dengan kunci berikut dan nilainya adalah daftar
Contoh {'One':[1, 2], 'Two': [2, 3], 'Three': [3, 4]}
Keluaran Sekarang, kita harus mengubahnya menjadi sesuatu seperti daftar yang disebutkan di bawah ini di mana elemen-elemennya adalah kamus
Contoh [{'One':1, 'Two': 2, 'Three': 3}, {'One': 2, 'Two': 3, 'Three': 4}]_
Keluaran
Kami memiliki dua cara untuk mencapai ini
Menggunakan pemahaman daftarPemahaman Daftar adalah cara menulis kode yang lebih ringkas untuk berbagai skenario dan juga meningkatkan keterbacaan kode Untuk mempelajari lebih lanjut tentang pemahaman daftar, silakan lihat artikel ini pemahaman daftar
Sekarang kita memiliki kamus daftar yang disimpan dalam variabel bernama ‘x’ . Kami melakukan iterasi melalui elemen kamus menggunakan for loop , membuat daftar kamus yang sesuai secara bersamaan dengan bantuan kode satu liner (pemahaman daftar) . result.
hasil = [{kunci. nilai[i] untuk kunci, nilai dalam x. item()} untuk saya dalam rentang (2)]
Contoh x = {'One':[1, 2], 'Two': [2, 3], 'Three': [3, 4]} print ("Dictionary of lists : " + str(x)) result = [{key : value[i] for key, value in x.items()} for i in range(2)] print ("Final List of dictionaries: " + str(result))
Keluaran
Menggunakan fungsi zip()Fungsi zip() menggabungkan dua atau lebih iterables seperti daftar, string, kamus, dll. Itu memetakan indeks serupa dari beberapa kontainer .
Contoh x = {'One':[1, 2], 'Two': [2, 3], 'Three': [3, 4]} print ("Dictionary of lists : " + str(x)) result = [dict(zip(x, i)) for i in zip(*x.values())] print ("Final List of dictionaries: " + str(result))
Keluaran Kami telah mengambil contoh yang sama x yang merupakan kamus daftar. Dalam metode ini, kami telah menggunakan fungsi zip() dua kali, sekali ketika kami meng-zip semua nilai indeks tertentu dari semua daftar sebagai satu dan kemudian lagi Nama fungsi saat ini tidak benar-benar memberi tahu saya apa fungsinya. Mari kita ubah untuk yang lebih tepat Apakah fungsinya benar-benar hanya berfungsi pada "file"? . Apa fungsinya? . Mungkin itu bukan nama terbaik tapi Ekspor pemisahan ke fungsi eksternal Algoritme pengiris dapat secara pasti melihat penggunaan di tempat lain, jadi kami menghapusnya _Menyatukan berbagai hal Sekarang sangat mudah untuk bernalar tentang apa yang Anda inginkan
Implementasi saya
Saya menemukan solusi ini lebih pythonic karena tidak ada "variabel ajaib" dalam kode, ia menggunakan Di sini kita memiliki skenario di mana jika string disajikan yang memiliki elemen di dalamnya membuatnya menjadi daftar. Tetapi elemen-elemen itu juga bisa mewakili pasangan kunci-nilai yang membuatnya menjadi kamus. Pada artikel ini kita akan melihat bagaimana mengambil string daftar seperti itu dan menjadikannya kamus Dengan membelah dan mengirisDalam pendekatan ini kami menggunakan fungsi split untuk memisahkan elemen sebagai pasangan nilai kunci dan juga menggunakan slicing untuk mengubah pasangan nilai kunci menjadi format kamus ContohDemo Langsung stringA = '[Mon:3, Tue:5, Fri:11]' # Given string print("Given string : \n",stringA) # Type check print(type(stringA)) # using split res = {sub.split(":")[0]: sub.split(":")[1] for sub in stringA[1:-1].split(", ")} # Result print("The converted dictionary : \n",res) # Type check print(type(res))_ KeluaranMenjalankan kode di atas memberi kita hasil berikut - ('Given string : \n', '[Mon:3, Tue:5, Fri:11]') ('The converted dictionary : \n', {'Fri': '11', 'Mon': '3', 'Tue': '5'}) Dengan eval dan gantiFungsi eval bisa memberi kita daftar sebenarnya dari sebuah string dan kemudian replace akan mengubah setiap elemen menjadi pasangan nilai kunci Bagaimana cara mengubah daftar menjadi kamus dengan Python?Untuk mengubah daftar menjadi kamus menggunakan nilai yang sama, Anda dapat menggunakan dict. metode fromkeys() . Untuk mengonversi dua daftar menjadi satu kamus, Anda dapat menggunakan fungsi Python zip(). Pemahaman kamus memungkinkan Anda membuat kamus baru berdasarkan nilai daftar.
Bagaimana cara mengubah banyak daftar menjadi kamus dengan Python?Cara Mengonversi Dua Daftar Menjadi Kamus . Zip daftar bersama-sama menggunakan zip(list_1, list_2) Buat kamus dari daftar tupel menggunakan konstruktor dict() pada hasilnya Dengan kata lain, panggil dict(zip(list_1, list_2)) untuk mengubah dua daftar menjadi kamus Bagaimana cara membagi teks menjadi kamus Python?Metode 1. Menggunakan split() + loop
.
Bagaimana cara membagi nilai kamus dengan Python?Di sini, kita akan menggunakan fungsi bawaan Python yaitu. keys() berfungsi dengan Python, dan. values() di Python untuk memasukkan kunci dan nilai ke dalam daftar terpisah . |