Bagaimana saya bisa mendapatkan kunci kamus sebagai variabel langsung di Python (bukan dengan mencari dari nilai)?


189

Maaf untuk pertanyaan dasar ini tetapi pencarian saya pada ini tidak menghasilkan apa-apa selain cara mendapatkan kunci kamus berdasarkan nilainya yang saya lebih suka tidak menggunakan karena saya hanya ingin teks / nama kunci dan saya khawatir bahwa pencarian menurut nilai dapat berakhir dengan mengembalikan 2 kunci atau lebih jika kamus memiliki banyak entri ... apa yang saya coba lakukan adalah ini:

mydictionary={'keyname':'somevalue'}
for current in mydictionary:

   result = mydictionary.(some_function_to_get_key_name)[current]
   print result
   "keyname"

Alasan untuk ini adalah bahwa saya mencetak ini ke dokumen dan saya ingin menggunakan nama kunci dan nilai dalam melakukan ini

Saya telah melihat metode di bawah ini tetapi ini sepertinya hanya mengembalikan nilai kunci

get(key[, default])

Apakah Anda hanya ingin memeriksa bahwa 'keyname' ada di kamus? Karena Anda sudah memilikinya.
Relet

1
tidak seperti yang saya katakan, perlu mencetaknya, itu akan berulang melalui sejumlah besar kunci
Rick

currentadalah kunci saat ini, lakukan sajaprint current
Moberg

4
Bagaimana Anda mendapatkan kunci pertama dalam kamus? (tanpa iterasi)
VISQL

Jawaban:


238

Anda harus beralih ke kunci dengan:

for key in mydictionary:
   print "key: %s , value: %s" % (key, mydictionary[key])

10
Anda bisa menulisfor key in mydictionary:
blokeley

7
dalam python 3.6:print (f"key: {key}, value: {mydictionary[key]}")
JinSnow

94

Jika Anda ingin mencetak kunci dan nilai, gunakan yang berikut ini:

for key, value in my_dict.iteritems():
    print key, value

26
Untuk Python 3: items () bukan iteritems ()
toshiro92

82

Alasan untuk ini adalah bahwa saya mencetak ini ke dokumen dan saya ingin menggunakan nama kunci dan nilai dalam melakukan ini

Berdasarkan persyaratan di atas inilah yang akan saya sarankan:

keys = mydictionary.keys()
keys.sort()

for each in keys:
    print "%s: %s" % (each, mydictionary.get(each))

Saya lebih suka jawaban lain seperti untuk loop on my_dict.item()atau daftar pemahaman seperti keys = list(my_dict.keys)tetapi kalau-kalau ada seseorang yang ingin melakukan ini di Python 3: (baris 2) keys = sorted(my_dict.keys())+ add () untuk mencetak.
Honiix

50

Jika kamus berisi satu pasang seperti ini:

d = {'age':24}

maka Anda bisa mendapatkan

field, value = d.items()[0]

Untuk Python 3.5, lakukan ini:

key = list(d.keys())[0]

4
Python3.5:TypeError: 'dict_items' object does not support indexing
Sinux

Cukup retas tapi d .__ iter __ () .__ __ berikutnya () melakukan trik. Anda mendapatkan 'usia'. Anda mendapatkan hasil yang sama dengan ini d.items () .__ iter __ () .__ berikutnya __ () [0].
yoshi

2
Dalam Python3, ini berfungsi untuk satu pasangan dicts:key = list(d.keys())[0]
Juha Untinen

Jika Anda memiliki dict besar, menggunakan next()lebih baik sesuai dengan: stackoverflow.com/a/27638751/1488445
Juha Untinen

14

keys=[i for i in mydictionary.keys()] atau keys = list(mydictionary.keys())


Pastikan untuk menggunakan tag kode dan jelaskan juga jawaban Anda.
Chrismas007

9

Sesimpel itu:

mydictionary={'keyname':'somevalue'}
result = mydictionary.popitem()[0]

Anda akan memodifikasi kamus Anda dan membuat salinannya terlebih dahulu


8

Anda cukup menggunakan *yang membongkar kunci kamus. Contoh:

d = {'x': 1, 'y': 2}
t = (*d,)
print(t) # ('x', 'y')

python34: SyntaxError: dapat menggunakan ekspresi bintang hanya sebagai target penugasan
Tcll

dang, saya menggunakan python34 karena saya tidak bisa menjalankan sesuatu yang lebih baru di lingkungan pengujian windows saya.
Tcll

5

Iterate over dictionary (i) akan mengembalikan kunci, lalu menggunakannya (i) untuk mendapatkan nilainya

for i in D:
    print "key: %s, value: %s" % (i, D[i])

3

Untuk python 3 Jika Anda hanya ingin mendapatkan kunci gunakan ini. Ganti cetak (kunci) dengan cetak (nilai) jika Anda menginginkan nilainya.

for key,value in my_dict:
  print(key)

3

Apa yang kadang-kadang saya lakukan adalah saya membuat kamus lain hanya untuk dapat apa pun yang saya rasa perlu saya akses sebagai string. Kemudian saya mengulangi beberapa kamus kunci pencocokan untuk membangun misalnya tabel dengan kolom pertama sebagai deskripsi.

dict_names = {'key1': 'Text 1', 'key2': 'Text 2'}
dict_values = {'key1': 0, 'key2': 1} 

for key, value in dict_names.items():
    print('{0} {1}'.format(dict_names[key], dict_values[key])

Anda dapat dengan mudah melakukannya untuk sejumlah besar kamus untuk mencocokkan data (Saya suka fakta bahwa dengan kamus Anda selalu dapat merujuk pada sesuatu yang dikenal sebagai nama kunci)

ya saya menggunakan kamus untuk menyimpan hasil fungsi jadi saya tidak perlu menjalankan fungsi ini setiap kali saya memanggil mereka hanya sekali dan kemudian mengakses hasilnya kapan saja.

EDIT: dalam contoh saya nama kunci tidak terlalu penting (saya pribadi suka menggunakan nama kunci yang sama karena lebih mudah untuk memilih satu nilai dari kamus yang cocok), pastikan jumlah kunci di setiap kamus adalah sama


0

Anda dapat melakukan ini dengan melemparkan kunci dan nilai dict ke daftar. Itu juga bisa dilakukan untuk item.

Contoh:

f = {'one': 'police', 'two': 'oranges', 'three': 'car'}
list(f.keys())[0] = 'one'
list(f.keys())[1] = 'two'

list(f.values())[0] = 'police'
list(f.values())[1] = 'oranges'

-2

mudah mengubah posisi kunci dan nilai Anda, lalu gunakan nilai untuk mendapatkan kunci, dalam kunci kamus dapat memiliki nilai yang sama tetapi mereka (kunci) harus berbeda. misalnya jika Anda memiliki daftar dan nilai pertama adalah kunci untuk masalah Anda dan nilai lainnya adalah spesifikasi dari nilai pertama:

list1=["Name",'ID=13736','Phone:1313','Dep:pyhton']

Anda dapat menyimpan dan menggunakan data dengan mudah dalam Kamus dengan loop ini:

data_dict={}
for i in range(1, len(list1)):
     data_dict[list1[i]]=list1[0]
print(data_dict)
{'ID=13736': 'Name', 'Phone:1313': 'Name', 'Dep:pyhton': 'Name'}

maka Anda dapat menemukan kunci (nama) berdasarkan nilai input apa pun.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.