¿Cómo puedo obtener un par aleatorio de a dict? Estoy haciendo un juego en el que debes adivinar la capital de un país y necesito preguntas para que aparezcan al azar.
El dictparece{'VENEZUELA':'CARACAS'}
¿Cómo puedo hacer esto?
python
random
dictionary
key
tekknolagi
fuente
fuente

d.keys()hay una lista, pero no funcionará en Python 3.x donded.keys()hay un iterador. Deberías hacer en surandom.choice(list(d.keys()))lugar.d = {'VENEZUELA':'CARACAS', 'CANADA':'OTTAWA'}Jeje, +1 para el lavado de cerebro muy sutil ...Escribí esto tratando de resolver el mismo problema:
https://github.com/robtandy/randomdict
Tiene O (1) acceso aleatorio a claves, valores y elementos.
fuente
Prueba esto:
Esto definitivamente funciona.
fuente
Si no desea utilizar el
randommódulo, también puede probar popitem () :Como
dictno conserva el orden , al usarlopopitemobtienes elementos en un orden arbitrario (pero no estrictamente aleatorio).También tenga en cuenta que
popitemelimina el par clave-valor del diccionario, como se indica en los documentos .fuente
nextno funciona con un diccionario, ya que es un mapeo. (Vine aquí en busca de inspiración y esto fue todo).Llamando a random.choice en el
keysdiccionario (los países).fuente
random.choice(list(d.keys())).Esto funciona en Python 2 y Python 3:
Una clave aleatoria:
Un valor aleatorio
Una clave y un valor aleatorios
fuente
Si no quieres usar random.choice () puedes intentarlo de esta manera:
fuente
list(…)aquí varias veces. ¿Qué talmyDictionary_list = list(myDictionary)?Como la publicación original quería la pareja :
(estilo python 3)
fuente
Como esto es tarea:
Vea
random.sample()cuál seleccionará y devolverá un elemento aleatorio de una lista. Puede obtener una lista de claves de diccionario condict.keys()y una lista de valores de diccionario condict.values().fuente
random.sampleyrandom.choiceno puede trabajar con iteradores. Necesitan saber la longitud de la secuencia, que no se puede determinar a partir de un iterador.random.sampledevuelve elementoskaleatorios , devuelve un único elemento aleatoriorandom.choiceSupongo que está haciendo una aplicación de tipo cuestionario. Para este tipo de aplicación, he escrito una función que es la siguiente:
Si voy a dar la entrada de
questions = {'VENEZUELA':'CARACAS', 'CANADA':'TORONTO'}y llamar a la funciónshuffle(questions)entonces la salida será la siguiente:Puede ampliar esto aún más barajando las opciones también
fuente
selected_keys. Y probablemente repetirás eso unas 100 veces. Al menos elimine las claves tomadas de q likedel(q[current_selection]): puede sobrescribir q con el nuevo aleatorioselected_keyscomoq = selected_keysdespués de todo. ¡Tampoco te olvides de identificarte! Alternativamente, mira minp.random.choice(...)enfoque: stackoverflow.com/a/62843377/4575793Prueba esto (usando random.choice de los elementos)
fuente
Con las versiones modernas de Python (desde 3), los objetos devueltos por métodos
dict.keys(),dict.values()ydict.items()son objetos de vista *. Y bueno, se puede repetir, porrandom.choicelo que no es posible usarlo directamente , ya que ahora no son una lista o un conjunto.Una opción es usar la comprensión de la lista para hacer el trabajo con
random.choice:Referencias
fuente
fuente
Encontré esta publicación buscando una solución bastante comparable. Para seleccionar múltiples elementos de un dict, esto se puede usar:
fuente