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])
Rick
sumber
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])
systempuntoout
sumber
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
Escualo
sumber
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))
Manoj Govindan
sumber
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]
Sudhin
sumber
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())

kurian
sumber
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

Libert
sumber
8

Anda cukup menggunakan *yang membongkar kunci kamus. Contoh:

d = {'x': 1, 'y': 2}
t = (*d,)
print(t) # ('x', 'y')
Georg
sumber
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])
splucena
sumber
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)
siddharth
sumber
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

s3icc0
sumber
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'
lallolu
sumber
-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.

seyyed mojtaba shojasadati
sumber