de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
Jesse Pet
Jesse Pet
Question

Mendapatkan: TypeError: 'dict_values' objek tidak mendukung pengindeksan ketika menggunakan python 3.2.3

Ini kode saya:

{names[i]:d.values()[i] for i in range(len(names))}

Ini bekerja benar-benar baik-baik saja ketika menggunakan python 2.7.3; namun, ketika saya menggunakan python 3.2.3, saya mendapatkan pesan kesalahan yang menyatakan 'dict_values' objek tidak mendukung pengindeksan. Bagaimana saya bisa memodifikasi kode untuk membuatnya kompatibel untuk 3.2.3?

100 2013-07-02T17:06:26+00:00 3
Bhargav Rao
Bhargav Rao
Pertanyaan edit 9 Maret 2016 в 7:57
Pemrograman
python
python-3.x
Solution / Answer
 andersschuller
andersschuller
2 Juli 2013 в 5:10
2013-07-02T17:10:39+00:00
Lebih
Sumber
Sunting
#19812019

Di Python 3, dict.nilai-nilai() (bersama dengan dict.kunci-kunci() dan dict.item()) kembali view, daripada sebuah daftar. Lihat dokumentasi di sini. Oleh karena itu anda perlu untuk membungkus panggilan anda untuk dict.nilai-nilai() dalam panggilan untuk daftar seperti:

v = list(d.values())
{names[i]:v[i] for i in range(len(names))}
157
0
David Robinson
David Robinson
2 Juli 2013 в 5:08
2013-07-02T17:08:51+00:00
Lebih
Sumber
Sunting
#19812017

Sebuah versi sederhana dari kode anda akan sama:

dict(zip(names, d.values()))

Jika anda ingin menyimpan struktur yang sama, anda dapat mengubahnya ke:

vlst = list(d.values())
{names[i]: vlst[i] for i in range(len(names))}

(Anda dapat dengan mudah menempatkan daftar(d.nilai-nilai()) dalam pemahaman bukan vlst; it's hanya boros untuk melakukannya karena itu akan kembali membuat daftar setiap waktu).

13
0
 martineau
martineau
2 Juli 2013 в 6:15
2013-07-02T18:15:20+00:00
Lebih
Sumber
Sunting
#19812020

Di Python 3 dict.nilai-nilai() kembali metode kamus view object, tidak daftar di Python 2. Kamus pandangan yang memiliki panjang, dapat iterasi, dan mendukung keanggotaan pengujian, tapi don't mendukung pengindeksan.

Untuk membuat kode anda bekerja pada kedua versi, anda bisa menggunakan salah satu dari ini:

{names[i]:value for i,value in enumerate(d.values())}

    atau

values = list(d.values())
{name:values[i] for i,name in enumerate(names)}

Oleh jauh yang paling sederhana, cara tercepat untuk melakukan hal yang sama dalam kedua versi akan sama:

dict(zip(names, d.values()))

Namun perlu dicatat, bahwa semua metode ini akan memberikan anda hasil yang akan bervariasi tergantung pada isi sebenarnya dari d. Untuk mengatasi itu, anda mungkin dapat menggunakan OrderedDict sebaliknya, yang mengingat urutan tombol yang pertama dimasukkan ke dalamnya, sehingga anda dapat mengandalkan pesanan dari apa yang dikembalikan oleh nilai-nilai() metode.

 martineau
martineau
Jawaban edit 28 Januari 2019 в 1:41
7
0
Related communities 6
Python Indonesia
Python Indonesia
24 632 pengguna
Programmer Python Indonesia. Group ini dikelola oleh sejumlah admin. Baca pesan tersemat / pinned message: https://t.me/pythonID/217588
Buka telegram
Indonesian Python Warriors
Indonesian Python Warriors
1 438 pengguna
Di grup ini tidak ada kewajiban untuk menggunakan username dan foto. Yang tidak boleh adalah spamming. Gak boleh baper, kalau nanya yang bener, eror jangan difoto pake HP, gunakan screenshot, code copas ke pastebin.com lalu share link ke sini.
Buka telegram
Python-ID Jogja
Python-ID Jogja
954 pengguna
Buka telegram
BASIC PYTHON INDONESIA
BASIC PYTHON INDONESIA
240 pengguna
Buka telegram
Python Newbie Indonesia
Python Newbie Indonesia
194 pengguna
Peraturan grup Python Newbie 🌻Dilarang spam 🌻Dilarang menggunakan bahasa kasar 🌻Dilarang beriklan di grup tanpa seizin admin Beberapa video dasar python dapat diliat melalui channel youtube juan aditya Jangan lupa untuk subscribe ya🙏
Buka telegram
PythonWealth Indonesia 🇮🇩
PythonWealth Indonesia 🇮🇩
27 pengguna
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Roxana Elizabeth CASTILLO Avalos
Terdaftar 4 hari yang lalu
2
Hideo Nakagawa
Terdaftar 5 hari yang lalu
3
Sergiy Tytarenko
Terdaftar 6 hari yang lalu
4
shoxrux azadov
Terdaftar 1 minggu yang lalu
5
Koreets Koreytsev
Terdaftar 1 minggu yang lalu
ID
JA
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi