Pisahkan daftar menjadi kamus python

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 .

 

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

Pisahkan daftar menjadi kamus python

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

 

Pisahkan daftar menjadi kamus python

Kami memiliki dua cara untuk mencapai ini

  1. Menggunakan pemahaman daftar
  2. Menggunakan zip()

 

Menggunakan pemahaman daftar

Pemahaman 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

Pisahkan daftar menjadi kamus python

 

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

Pisahkan daftar menjadi kamus python

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 slice_and_group tampaknya baik-baik saja. Ini menceritakan setidaknya sedikit tentang fungsinya

Ekspor pemisahan ke fungsi eksternal

Algoritme pengiris dapat secara pasti melihat penggunaan di tempat lain, jadi kami menghapusnya

def slice_list(lst, slice_size):
    if not isinstance(slice_size, int) or slice_size <= 0:
        raise ValueError("slice_size must be a positive integer")

    for i in xrange(0, len(lst), slice_size):
        yield lst[i:i+slice_size]
_

Menyatukan berbagai hal

Sekarang sangat mudah untuk bernalar tentang apa yang Anda inginkan

  • Buat kamus irisan
  • Iris daftar yang dimasukkan
  • Cocokkan int dengan masing-masing irisan
  • Masukkan itu ke dalam dikte
  • Kembalikan dikt

Implementasi saya

def slice_and_group(lst, slice_size=10):
    slices = {}
    for i,l in enumerate(slice_list(lst, slice_size)):
        slices[i] = l

    return slices 

Saya menemukan solusi ini lebih pythonic karena tidak ada "variabel ajaib" dalam kode, ia menggunakan enumerate untuk mencocokkan int dengan irisan, dan loop sederhana untuk menetapkan nilai. Mudah dan mudah dibaca

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 mengiris

Dalam 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

Contoh

Demo 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))
_

Keluaran

Menjalankan 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 ganti

Fungsi 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 .