Saya cukup yakin saya mengakses kunci daftar di kamus yang membuat daftar dengan benar, tetapi penerjemah melemparkan kesalahan
Ups, coba lagi. Kode Anda terlihat agak aneh–ini memunculkan kesalahan "indeks daftar harus berupa bilangan bulat, bukan dict". Jangan ragu untuk mengintip kembali latihan sebelumnya jika Anda memerlukan penyegaran sintaks
Ini kode saya
lloyd = { "name": "Lloyd", "homework": [90.0, 97.0, 75.0, 92.0], "quizzes": [88.0, 40.0, 94.0], "tests": [75.0, 90.0] } alice = { "name": "Alice", "homework": [100.0, 92.0, 98.0, 100.0], "quizzes": [82.0, 83.0, 91.0], "tests": [89.0, 97.0] } tyler = { "name": "Tyler", "homework": [0.0, 87.0, 75.0, 22.0], "quizzes": [0.0, 75.0, 78.0], "tests": [100.0, 100.0] } students = [lloyd, alice, tyler] for student in students: print students[student]['name'] print students[student]['homework'] print students[student]['quizzes'] print students[student]['tests']Saya dapat mengatasi masalah ini dengan memodifikasi kode saya menjadi yang berikut dengan saya yakin pasti ada cara yang lebih baik
Daftar dan kamus Python adalah dua struktur data dalam Python yang digunakan untuk menyimpan data. Daftar Python adalah urutan objek yang diurutkan, sedangkan kamus tidak diurutkan. Item dalam daftar dapat diakses dengan indeks (berdasarkan posisinya) sedangkan item dalam kamus dapat diakses dengan kunci dan bukan dengan posisinya
Mari kita lihat cara mengonversi daftar Python ke kamus
Sepuluh cara berbeda untuk mengonversi daftar Python ke kamus
- Mengubah daftar tupel menjadi kamus
- Mengubah dua daftar dengan panjang yang sama menjadi kamus
- Mengubah dua daftar dengan panjang berbeda menjadi kamus
- Mengubah daftar kunci alternatif, nilai item ke kamus
- Mengubah daftar kamus menjadi satu kamus
- Mengubah daftar menjadi kamus menggunakan enumerate()
- Mengubah daftar menjadi kamus menggunakan pemahaman kamus
- Mengubah daftar menjadi kamus menggunakan dict. fromkeys()
- Mengubah daftar bersarang menjadi kamus menggunakan pemahaman kamus
- Mengubah daftar menjadi kamus menggunakan Counter()
1. Mengubah Daftar Tuple menjadi Kamus
Konstruktor itertools.zip_longest(*iterables,fillvalue=None)0 membangun kamus langsung dari urutan pasangan kunci-nilai
#Converting list of tuples to dictionary by using dict() constructorcolor=[('red',1),('blue',2),('green',3)]
d=dict(color)
print (d)#Output:{'red': 1, 'blue': 2, 'green': 3}
2. Mengonversi Dua Daftar dengan Panjang yang Sama menjadi Kamus
Kita dapat mengonversi dua daftar dengan panjang yang sama ke kamus menggunakan itertools.zip_longest(*iterables,fillvalue=None)1
itertools.zip_longest(*iterables,fillvalue=None)1 akan mengembalikan iterator tupel. Kita dapat mengonversi objek zip itu menjadi kamus menggunakan konstruktor itertools.zip_longest(*iterables,fillvalue=None)0
ritsleting()
Buat iterator yang menggabungkan elemen dari masing-masing iterables
“itertools.zip_longest(*iterables,fillvalue=None)_4. Mengembalikan iterator tupel, di mana tupel ke-i berisi elemen ke-i dari setiap urutan argumen atau iterables. Iterator berhenti ketika input iterable terpendek habis. Dengan satu argumen iterable, ia mengembalikan iterator 1-tupel. Tanpa argumen, ia mengembalikan iterator kosong. ” — Piton
Contoh
Menggunakan zip()Sumber gambar. Pengarang
3. Mengubah Dua Daftar dengan Panjang Berbeda menjadi Kamus
Kita dapat mengonversi dua daftar dengan panjang berbeda ke kamus menggunakan itertools.zip_longest(*iterables,fillvalue=None)5
Sesuai
itertools.zip_longest(*iterables,fillvalue=None)_“itertools.zip_longest(*iterables,fillvalue=None)_6. Membuat iterator yang mengumpulkan elemen dari masing-masing iterables. Jika iterable memiliki panjang yang tidak rata, nilai yang hilang diisi dengan nilai isian. Iterasi berlanjut hingga iterable terpanjang habis
Di zip(), iterasi berlanjut hingga iterable terpendek habis. ”
Menggunakan itertools.zip_longest(*iterables,fillvalue=None)_1, iterasi berlanjut hingga iterable terpendek habis
Menggunakan zip()Menggunakan itertools.zip_longest(*iterables,fillvalue=None)_6, iterasi berlanjut sampai iterable terlama habis. Secara default, itertools.zip_longest(*iterables,fillvalue=None)_9 adalah s[i:j:k] — slice of s from i to j with step k0
Menggunakan zip_longest()Gambar oleh Penulis
itertools.zip_longest(*iterables,fillvalue=None)_9 disebut sebagai x
Menggunakan zip_longest()4. Mengonversi Daftar Kunci Alternatif, Item Nilai ke Kamus
Kami dapat mengonversi daftar kunci alternatif, nilai sebagai item ke kamus menggunakan pemotongan
Mengiris mengembalikan daftar baru yang berisi urutan item dari daftar. Kami dapat menentukan rentang indeks
s[i:j:k] — slice of s from i to j with step kKita dapat membuat dua daftar irisan. Daftar pertama hanya berisi kunci dan daftar berikutnya berisi nilai saja
l1=[1,'a',2,'b',3,'c',4,'d']Buat dua objek irisan dari daftar ini
Objek irisan pertama akan berisi kunci saja
s[i:j:k] — slice of s from i to j with step k2
s[i:j:k] — slice of s from i to j with step k3 tidak disebutkan. Secara default, ini akan dimulai dari awal daftar
s[i:j:k] — slice of s from i to j with step k4 tidak disebutkan. Secara default, ini akan berhenti di akhir daftar
s[i:j:k] — slice of s from i to j with step k4 disebutkan sebagai 2
s[i:j:k] — slice of s from i to j with step k2 Mengembalikan daftar yang berisi elemen dari awal hingga akhir menggunakan langkah 2 (elemen alternatif)
[1,2,3,4]Sumber gambar. Pengarang
Objek irisan kedua akan berisi nilai saja
l1=[1,'a',2,'b',3,'c',4,'d']s[i:j:k] — slice of s from i to j with step k7
s[i:j:k] — slice of s from i to j with step k3 disebutkan sebagai 1. Ini akan mulai mengiris dari indeks pertama
s[i:j:k] — slice of s from i to j with step k4 tidak disebutkan. Itu akan berhenti di akhir daftar
l1=[1,'a',2,'b',3,'c',4,'d']_0 disebutkan sebagai 2
l1=[1,'a',2,'b',3,'c',4,'d']_1] Mengembalikan daftar yang berisi elemen dari indeks pertama hingga akhir menggunakan langkah 2 (elemen alternatif)
['a', 'b', 'c', 'd']Sumber Gambar. Pengarang
Sekarang kita dapat menggabungkan kedua daftar tersebut menggunakan fungsi itertools.zip_longest(*iterables,fillvalue=None)1
Mengubah daftar menjadi kamus menggunakan Slicing5. Mengubah Daftar Kamus menjadi Kamus Tunggal
Daftar kamus dapat diubah menjadi satu kamus dengan cara berikut
- l1=[1,'a',2,'b',3,'c',4,'d']_3
- pemahaman kamus
- l1=[1,'a',2,'b',3,'c',4,'d']_4
dikt. memperbarui()
Kami dapat mengonversi daftar kamus menjadi satu kamus menggunakan l1=[1,'a',2,'b',3,'c',4,'d']3
- Buat kamus kosong
- Ulangi daftar kamus menggunakan loop l1=[1,'a',2,'b',3,'c',4,'d']6
- Sekarang perbarui setiap item (pasangan kunci-nilai) ke kamus kosong menggunakan l1=[1,'a',2,'b',3,'c',4,'d']3
Pemahaman kamus
Pemahaman kamus terdiri dari tanda kurungl1=[1,'a',2,'b',3,'c',4,'d']_8 berisi dua ekspresi yang dipisahkan dengan titik dua diikuti oleh klausa l1=[1,'a',2,'b',3,'c',4,'d']6, kemudian nol atau lebih l1=[1,'a',2,'b',3,'c',4,'d']6 atau [1,2,3,4]1 klausa
l1=[{1:'a',2:'b'},{3:'c',4:'d'}]d1={k:v for e in l1 for (k,v) in e.items()}
[1,2,3,4]2 — Mengembalikan setiap item dalam daftar [1,2,3,4]3
[1,2,3,4]_4 — Mengembalikan kunci, pasangan nilai dalam item tersebut. [1,2,3,4]5 [1,2,3,4]6
[1,2,3,4]_7— diperbarui dalam kamus d1
Pemahaman kamusKoleksi. Peta Rantai
Dengan menggunakan [1,2,3,4]_8, kita dapat mengonversi daftar kamus menjadi satu kamus
Sesuai dengan
“[1,2,3,4]_9. ChainMap mengelompokkan beberapa kamus atau pemetaan lain bersama-sama untuk membuat satu tampilan yang dapat diperbarui. ”
Jenis pengembaliannya adalah l1=[1,'a',2,'b',3,'c',4,'d']0. Kita dapat mengonversi ke kamus menggunakan konstruktor itertools.zip_longest(*iterables,fillvalue=None)0
6. Mengubah Daftar menjadi Kamus Menggunakan Enumerate()
Dengan menggunakan l1=[1,'a',2,'b',3,'c',4,'d']_2, kita dapat mengonversi daftar menjadi kamus dengan indeks sebagai kunci dan item daftar sebagai nilainya
l1=[1,'a',2,'b',3,'c',4,'d']_2 akan mengembalikan objek enumerate
Kita dapat mengonversi ke dict menggunakan konstruktor itertools.zip_longest(*iterables,fillvalue=None)0
Sesuai dengan
menghitung()“l1=[1,'a',2,'b',3,'c',4,'d']_5. Mengembalikan objek enumerasi. iterable harus berupa urutan, terator, atau objek lain yang mendukung iterasi. Thel1=[1,'a',2,'b',3,'c',4,'d']_6 metode iterator yang dikembalikan oleh l1=[1,'a',2,'b',3,'c',4,'d']2 mengembalikan tuple yang berisi hitungan (dari awal yang defaultnya ke 0) dan nilai yang diperoleh dari iterasi selama iterable
7. Mengubah Daftar Menjadi Kamus Menggunakan Pemahaman Kamus
Dengan menggunakan pemahaman kamus, kita dapat mengubah daftar kunci menjadi kamus yang memiliki nilai yang sama
d1={k:"a" for k in l1}Itu akan beralih melalui daftar dan mengubah itemnya sebagai kunci (l1=[1,'a',2,'b',3,'c',4,'d']8), dan nilainya akan menjadi l1=[1,'a',2,'b',3,'c',4,'d']9 untuk semua kunci
8. Mengubah Daftar menjadi Kamus Menggunakan dict. fromkeys()
['a', 'b', 'c', 'd']0 akan menerima daftar kunci, yang diubah menjadi kunci kamus, dan nilai, yang akan ditetapkan
Nilai yang sama akan diberikan ke semua kunci
9. Mengonversi Daftar Bersarang ke Kamus Menggunakan Pemahaman Kamus
Kita dapat mengonversi daftar bersarang menjadi kamus dengan menggunakan pemahaman kamus
['a', 'b', 'c', 'd']1
Ini akan beralih melalui daftar
Ini akan mengambil item pada indeks 0 sebagai kunci dan indeks 1 sebagai nilai
10. Mengubah Daftar menjadi Kamus Menggunakan Penghitung ()
collections.Counter(iterable-or-mapping)“['a', 'b', 'c', 'd']_2. Counter adalah subclass dict untuk menghitung objek hashable. Ini adalah kumpulan tempat elemen disimpan sebagai kunci kamus dan hitungannya disimpan sebagai nilai kamus. Hitungan diperbolehkan berupa nilai bilangan bulat apa pun termasuk hitungan nol atau negatif. ” — Piton
['a', 'b', 'c', 'd']3 akan mengonversi item daftar menjadi kunci dan frekuensinya menjadi nilai
Menangkal()Link blog saya yang lain
15 Hal yang Perlu Diketahui untuk Menguasai Kamus Python
25 Pertanyaan Teratas di Daftar Python
7 Cara Berbeda untuk Menggabungkan Kamus dengan Python
Menggabungkan Daftar dengan Python
Sumber dayaTonton ruang ini untuk lebih banyak artikel tentang Python dan Ilmu Data. Jika Anda ingin membaca lebih banyak tutorial saya, ikuti saya di Medium, LinkedIn, Twitter