Bagaimana saya bisa mendapatkan pasangan acak dari a dict
? Saya membuat game di mana Anda perlu menebak ibukota suatu negara dan saya butuh pertanyaan untuk muncul secara acak.
The dict
tampak seperti{'VENEZUELA':'CARACAS'}
Bagaimana saya bisa melakukan ini?
python
random
dictionary
key
tekknolagi
sumber
sumber
d.keys()
daftar, tetapi itu tidak akan bekerja di Python 3.x di manad.keys()
merupakan iterator. Anda seharusnya melakukannyarandom.choice(list(d.keys()))
.d = {'VENEZUELA':'CARACAS', 'CANADA':'OTTAWA'}
Hehe, +1 untuk pencucian otak yang sangat halus ...Saya menulis ini mencoba memecahkan masalah yang sama:
https://github.com/robtandy/randomdict
Ini memiliki O (1) akses acak ke kunci, nilai, dan item.
sumber
Coba ini:
Ini pasti berhasil.
sumber
Jika Anda tidak ingin menggunakan
random
modul, Anda juga dapat mencoba popitem () :Karena
dict
tidak mempertahankan pesanan , dengan menggunakanpopitem
Anda mendapatkan item dalam urutan acak (tetapi tidak sepenuhnya acak) darinya.Juga perlu diingat bahwa
popitem
menghapus pasangan nilai kunci dari kamus, sebagaimana dinyatakan dalam dokumen .sumber
next
tidak berfungsi dengan kamus karena merupakan pemetaan. (Saya datang ke sini untuk inspirasi dan ini dia).Dengan memanggil random.choice pada
keys
kamus (negara).sumber
random.choice(list(d.keys()))
.Ini berfungsi dalam Python 2 dan Python 3:
Kunci acak:
Nilai acak
Kunci dan nilai acak
sumber
Jika Anda tidak ingin menggunakan random.choice () Anda dapat mencoba cara ini:
sumber
list(…)
beberapa kali di sini. Bagaimana denganmyDictionary_list = list(myDictionary)
?Karena posting asli menginginkan pasangan :
(gaya python 3)
sumber
Karena ini adalah pekerjaan rumah:
Lihat
random.sample()
yang akan memilih dan mengembalikan elemen acak dari daftar. Anda bisa mendapatkan daftar kunci kamusdict.keys()
dan daftar nilai kamusdict.values()
.sumber
random.sample
danrandom.choice
tidak bisa bekerja dengan iterator. Mereka perlu mengetahui panjang urutan, yang tidak dapat ditentukan dari iterator.random.sample
mengembalikan elemenk
acak , mengembalikan elemen acak tunggalrandom.choice
Saya berasumsi bahwa Anda sedang membuat semacam aplikasi kuis. Untuk aplikasi semacam ini saya telah menulis fungsi yaitu sebagai berikut:
Jika saya akan memberi input
questions = {'VENEZUELA':'CARACAS', 'CANADA':'TORONTO'}
dan memanggil fungsishuffle(questions)
maka outputnya adalah sebagai berikut:Anda dapat memperpanjang ini lebih jauh dengan mengocok opsi juga
sumber
selected_keys
. Dan Anda mungkin akan mengulanginya sekitar 100 kali. Setidaknya hapus kunci q seperti yang diambildel(q[current_selection])
- Anda dapat menimpa q dengan yang baru dikocokselected_keys
sepertiq = selected_keys
semuanya. Juga jangan lupa tentang pengidentifikasian! Atau lihatnp.random.choice(...)
pendekatan saya : stackoverflow.com/a/62843377/4575793Coba ini (menggunakan pilihan acak dari item)
sumber
Dengan versi Python modern (sejak 3), objek dikembalikan dengan metode
dict.keys()
,dict.values()
dandict.items()
objek tampilan *. Dan hei dapat diulang, jadi menggunakan secara langsungrandom.choice
tidak mungkin karena sekarang mereka bukan daftar atau set.Salah satu opsi adalah menggunakan pemahaman daftar untuk melakukan pekerjaan dengan
random.choice
:Referensi:
sumber
sumber
Saya menemukan posting ini dengan mencari solusi yang agak sebanding. Untuk memilih beberapa elemen dari suatu dict, ini dapat digunakan:
sumber