Cara mengindeks daftar di dalam kamus python

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

  1. Mengubah daftar tupel menjadi kamus
  2. Mengubah dua daftar dengan panjang yang sama menjadi kamus
  3. Mengubah dua daftar dengan panjang berbeda menjadi kamus
  4. Mengubah daftar kunci alternatif, nilai item ke kamus
  5. Mengubah daftar kamus menjadi satu kamus
  6. Mengubah daftar menjadi kamus menggunakan enumerate()
  7. Mengubah daftar menjadi kamus menggunakan pemahaman kamus
  8. Mengubah daftar menjadi kamus menggunakan dict. fromkeys()
  9. Mengubah daftar bersarang menjadi kamus menggunakan pemahaman kamus
  10. 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() constructor
color=[('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)_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. ”

itertools.zip_longest(*iterables,fillvalue=None)_

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 k

Kita 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 Slicing

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

Menggunakan dikt. memperbarui()

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 kamus

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

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

menghitung()

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 ()

['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

collections.Counter(iterable-or-mapping)

['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 daya

Tonton 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

Bisakah Anda mengindeks nilai dalam kamus Python?

Objek Kamus Python menyediakan kunci. fasilitas pengindeksan nilai . Perhatikan bahwa kamus tidak diurutkan - karena nilai dalam kamus diindeks oleh kunci, kamus tidak disimpan dalam urutan tertentu, tidak seperti daftar, di mana setiap item dapat ditemukan berdasarkan posisinya dalam daftar.

Bagaimana Anda memanggil nilai daftar dalam kamus dengan Python?

Berikut adalah 3 pendekatan untuk mengekstrak nilai kamus sebagai daftar dengan Python. .
(1) Menggunakan fungsi list(). my_list = daftar(my_dict. nilai())
(2) Menggunakan Pemahaman Daftar. my_list = [i untuk i di my_dict. nilai()]
(3) Menggunakan For Loop. my_list = [] untuk i di my_dict. nilai(). daftarku. tambahkan (i)

Apakah mungkin menempatkan daftar sebagai nilai di dalam kamus?

Anda tidak dapat menggunakan daftar sebagai kunci kamus karena daftar dapat diubah dan karenanya tidak dapat di-hash . Karena kamus dibangun di atas tabel hash, semua kunci harus dapat di-hash atau Python memunculkan pesan kesalahan.

Postingan terbaru

LIHAT SEMUA