Saya mencoba membuat program saya untuk dicetak "banana"
dari kamus. Apa cara paling sederhana untuk melakukan ini?
Ini kamus saya:
prices = {
"banana" : 4,
"apple" : 2,
"orange" : 1.5,
"pear" : 3
}
python
dictionary
Slagoy
sumber
sumber
to print out banana with a FOR loop, so when I run it, each key would also be printed out
Apakah yang Anda maksudfor k in prices: print k
? Itu akan mencetak semua kunci dalam kamus.Jawaban:
Pada versi Python di mana perintah sebenarnya dipesan, Anda bisa melakukannya
Agar diktat dipesan, Anda perlu Python 3.7+, atau 3.6+ jika Anda tidak keberatan dengan mengandalkan sifat teknis-an-implementasi-detail yang dipesan dari dikt pada Python 3.6.
Untuk versi Python sebelumnya, tidak ada "kunci pertama".
sumber
next(iter( my_dict.items() ))
Kamus tidak diindeks, tetapi dalam beberapa cara, dipesan. Berikut ini akan memberi Anda kunci pertama yang ada:
sumber
list(my_dict)[0]
karena akan mengambil daftar kunci?Pembaruan: pada Python 3.7, urutan penyisipan dipertahankan, sehingga Anda tidak perlu di
OrderedDict
sini. Anda dapat menggunakan pendekatan di bawah ini dengan normaldict
sumber
Python 3.6 dan sebelumnya *
Jika Anda berbicara tentang reguler
dict
, maka "kunci pertama" tidak berarti apa-apa. Kunci tidak dipesan dengan cara apa pun yang dapat Anda andalkan. Jika Anda mengulanginya,dict
kemungkinan besar Anda tidak akan mendapatkan"banana"
hal pertama yang Anda lihat.Jika Anda perlu menjaga semuanya, maka Anda harus menggunakan
OrderedDict
dan bukan hanya kamus biasa.Jika Anda kemudian ingin melihat semua kunci agar Anda bisa melakukannya dengan mengulanginya
Anda bisa, atau memasukkan semua kunci ke dalam daftar dan kemudian bekerja dengan itu
Cara yang lebih cepat untuk mendapatkan elemen pertama tanpa membuat daftar adalah memanggil
next
iterator. Ini tidak menggeneralisasi dengan baik ketika mencoba untuk mendapatkannth
elemen* CPython telah menjamin pesanan penyisipan sebagai detail implementasi dalam 3.6.
sumber
Untuk Python 3 di bawah ini menghilangkan overhead dari konversi daftar:
sumber
The
dict
jenis adalah unordered pemetaan, sehingga tidak ada hal seperti itu sebagai "pertama" elemen.Apa yang Anda inginkan mungkin
collections.OrderedDict
.sumber
Jadi saya menemukan halaman ini ketika mencoba untuk mengoptimalkan sesuatu untuk mengambil satu-satunya kunci dalam kamus yang diketahui panjang 1 dan hanya mengembalikan kunci. Proses di bawah ini adalah yang tercepat untuk semua kamus yang saya coba hingga ukuran 700.
Saya mencoba 7 pendekatan berbeda, dan menemukan bahwa ini adalah yang terbaik, pada Macbook 2014 saya dengan Python 3.6:
Hasil dari profil mereka adalah:
Semua pendekatan yang saya coba ada di sini:
sumber
Sekalipun sederhana, jawabannya menurut saya adalah
first = list(prices)[0]
mengonversi kamus ke daftar akan menampilkan kunci dan kami akan memilih kunci pertama dari daftar.
sumber
next(iter(prices))
, seperti yang sudah disarankan oleh jawaban lain.Seperti yang telah ditunjukkan oleh banyak orang lain, tidak ada nilai pertama dalam kamus. Pengurutan di dalamnya sewenang-wenang dan Anda tidak dapat mengandalkan pengurutan yang sama setiap kali Anda mengakses kamus. Namun jika Anda ingin mencetak kunci ada beberapa cara untuk itu:
Metode ini menggunakan penugasan tuple untuk mengakses kunci dan nilainya. Ini berguna jika Anda perlu mengakses kunci dan nilai karena suatu alasan.
Ini hanya akan memberikan akses ke kunci sesuai dengan
keys()
metode.sumber
d.keys () [0] untuk mendapatkan kunci individual.
Pembaruan: - @AlejoBernardin, saya tidak yakin mengapa Anda mengatakan itu tidak berhasil. di sini saya memeriksa dan berhasil. mengimpor koleksi
sumber
dict.keys()
mengembalikan'dict_keys' object
bukanlist
, yang tidak mendukung pengindeksan.Gunakan for for yang berkisar melalui semua kunci di
prices
:Pastikan Anda mengubah
prices.items()
keprices.iteritems()
jika Anda menggunakan Python 2.xsumber
Jika Anda hanya ingin kunci pertama dari kamus, Anda harus menggunakan apa yang disarankan banyak orang sebelumnya
Namun, jika Anda menginginkan yang pertama dan menyimpan sisanya sebagai daftar, Anda dapat menggunakan nilai-nilai operator pembongkaran
Hal yang sama berlaku pada nilai dengan mengganti
prices
denganprices.values()
dan untuk kedua kunci dan nilai Anda bahkan dapat menggunakan tugas membongkarsumber
Cara termudah adalah:
tetapi beberapa kali Anda harus lebih berhati-hati dan memastikan bahwa entitas Anda adalah daftar yang berharga jadi:
sumber
TypeError: 'dict_keys' object is not subscriptable
, setidaknya dengan Python 3.8