Saya ingin mencetak kunci kamus Python tertentu:
mydic = {}
mydic['key_name'] = 'value_name'
Sekarang saya dapat memeriksa apakah mydic.has_key('key_name')
, tetapi apa yang ingin saya lakukan adalah mencetak nama kunci 'key_name'
. Tentu saja saya bisa menggunakan mydic.items()
, tetapi saya tidak ingin semua kunci terdaftar, hanya satu kunci spesifik. Sebagai contoh, saya mengharapkan sesuatu seperti ini (dalam pseudo-code):
print "the key name is", mydic['key_name'].name_the_key(), "and its value is", mydic['key_name']
Apakah ada name_the_key()
metode untuk mencetak nama kunci?
Sunting:
Oke, terima kasih banyak kawan atas reaksi Anda! :) Saya menyadari pertanyaan saya tidak dirumuskan dengan baik dan sepele. Saya baru saja bingung karena saya menyadari key_name dan mydic['key_name']
dua hal yang berbeda dan saya pikir akan salah untuk mencetak key_name
konteks kamus. Tapi memang saya bisa menggunakan 'key_name' untuk merujuk ke kunci! :)
sumber
Jawaban:
Kamus memiliki, menurut definisi, jumlah kunci yang sewenang-wenang. Tidak ada "kunci". Anda memiliki
keys()
metode, yang memberi Anda pythonlist
dari semua kunci, dan Anda memilikiiteritems()
metode, yang mengembalikan pasangan nilai kunci, jadiVersi Python 3:
Jadi Anda memiliki pegangan pada kunci, tetapi mereka hanya benar-benar masuk akal jika digabungkan ke suatu nilai. Saya harap saya mengerti pertanyaan Anda.
sumber
.iteritems()
tidak lagi didukung ....items()
. Saya menambahkan contoh.items()
mengembalikan daftar dengan python 2.x.Selain itu Anda dapat menggunakan ....
sumber
Hmm, saya pikir apa yang mungkin ingin Anda lakukan adalah mencetak semua kunci dalam kamus dan nilainya masing-masing?
Jika demikian Anda menginginkan yang berikut:
Pastikan Anda menggunakan + sebagai ganti, 'juga. Saya pikir koma akan menempatkan masing-masing item pada baris terpisah, sedangkan plus akan menempatkannya pada baris yang sama.
sumber
"is"
dankey
lain - lain. Jika Anda menggunakan,+
Anda harus meletakkan bantalan ekstra di string. Juga kunci dan nilai tidak harus berupa string, dalam hal ini koma akan menggunakan str (kunci) dan str (nilai) sedangkan+
akan menyebabkan kesalahanCatatan: Dalam Python 3, dic.iteritems () diubah namanya menjadi dic.items ()
sumber
Nama kunci 'key_name' adalah key_name, oleh karena itu
print 'key_name'
atau variabel apa pun yang Anda wakili.sumber
Dengan Python 3:
sumber
Karena kita semua mencoba menebak apa arti "mencetak nama kunci", saya akan coba. Mungkin Anda menginginkan fungsi yang mengambil nilai dari kamus dan menemukan kunci yang sesuai? Pencarian terbalik?
Perhatikan bahwa banyak kunci dapat memiliki nilai yang sama, jadi fungsi ini akan mengembalikan beberapa kunci yang memiliki nilai, mungkin bukan yang Anda maksudkan.
Jika Anda perlu sering melakukan ini, masuk akal untuk membuat kamus terbalik:
sumber
iteritems
keitems
, maka seperti yang ditunjukkan pada awalnya, jawaban ini hanya akan mengembalikan kunci pertama - jika ada beberapa kecocokan. Untuk mengatasi ini, buat daftar kosong sebelumfor loop
(values_list = []
), lalu tambahkan kunci ke daftar ini (values_list.append(k)
), dalamif
loop. Terakhir, pindahkan pernyataan kembali (return values_list
) di luarfor
loop.Atau Anda dapat melakukannya dengan cara itu:
sumber
Sunting: Diperbarui untuk f-string python 3 ...
sumber
Pastikan untuk melakukannya
sumber
Apa yang salah dengan menggunakan
'key_name'
, bahkan jika itu adalah variabel?sumber
sumber
sumber
Mungkin cara tercepat untuk hanya mengambil nama kunci:
Hasil:
Mengonversi
dictionary
menjadi menjadilist
lalu mencantumkan elemen pertama yang merupakan keseluruhandict
lalu mencantumkan nilai pertama dari elemen tersebut yaitu:key_name
sumber
Saya mencari pertanyaan ini, karena saya ingin tahu cara mengambil nama "kunci" jika kamus saya hanya punya satu entri. Dalam kasus saya, kuncinya tidak diketahui oleh saya dan bisa berupa beberapa hal. Inilah yang saya pikirkan:
sumber
Coba ini:
sumber
sumber
Jika Anda ingin mendapatkan kunci dari satu nilai, berikut ini akan membantu:
Secara pythonic:
sumber
Saya menambahkan jawaban ini sebagai salah satu jawaban lain di sini ( https://stackoverflow.com/a/5905752/1904943 ) bertanggal (Python 2;
iteritems
), dan kode yang disajikan - jika diperbarui untuk Python 3 per yang disarankan solusi dalam komentar untuk jawaban itu - diam-diam gagal mengembalikan semua data yang relevan.Latar Belakang
Saya memiliki beberapa data metabolik, terwakili dalam grafik (node, edge, ...). Dalam representasi kamus dari data tersebut, kunci berbentuk
(604, 1037, 0)
(mewakili sumber dan target node, dan jenis tepi), dengan nilai -nilai bentuk5.3.1.9
(mewakili kode enzim EC).Temukan kunci untuk nilai yang diberikan
Kode berikut dengan benar menemukan kunci saya, memberikan nilai:
sedangkan kode ini hanya mengembalikan kunci pertama (dari beberapa kemungkinan yang cocok):
Kode terakhir, naif diperbarui mengganti
iteritems
denganitems
, gagal untuk kembali(604, 3936, 0), (1037, 3936, 0
.sumber
Untuk mengakses data, Anda harus melakukan ini:
Atau, untuk mengakses nilai yang Anda sebut saja dari kunci:
foo[bar]
sumber