Как я могу получить случайную пару от dict
? Я делаю игру, в которой вам нужно угадать столицу страны, и мне нужно, чтобы вопросы появлялись случайным образом.
В dict
смахивает{'VENEZUELA':'CARACAS'}
Как я могу это сделать?
python
random
dictionary
key
tekknolagi
источник
источник
d.keys()
есть список, но не будет работать в Python 3.x, гдеd.keys()
есть итератор. Вы должны сделатьrandom.choice(list(d.keys()))
вместо этого.d = {'VENEZUELA':'CARACAS', 'CANADA':'OTTAWA'}
Хе-хе, +1 за очень тонкое промывание мозгов ...Я написал это, пытаясь решить ту же проблему:
https://github.com/robtandy/randomdict
Он имеет O (1) произвольный доступ к ключам, значениям и элементам.
источник
Попробуй это:
Это определенно работает.
источник
Если вы не хотите использовать
random
модуль, вы также можете попробовать popitem () :Поскольку
dict
порядок не сохраняет , используя его,popitem
вы получаете элементы в произвольном (но не строго случайном) порядке.Также имейте в виду, что
popitem
удаляет пару ключ-значение из словаря, как указано в документации .источник
next
не работает со словарем, так как это отображение. (Я пришел сюда для вдохновения, и это было все).Позвонив random.choice на
keys
словаре (страна).источник
random.choice(list(d.keys()))
.Это работает в Python 2 и Python 3:
Случайный ключ:
Случайное значение
Случайный ключ и значение
источник
Если вы не хотите использовать random.choice (), вы можете попробовать это следующим образом:
источник
list(…)
здесь несколько раз. Как насчетmyDictionary_list = list(myDictionary)
?Так как оригинальный пост хотел пару :
(стиль Python 3)
источник
Так как это домашнее задание:
Проверьте,
random.sample()
какой из них выберет и вернет случайный элемент из списка. Вы можете получить список ключей словаря с помощьюdict.keys()
и список значений словаря с помощьюdict.values()
.источник
random.sample
иrandom.choice
не может работать с итераторами. Им нужно знать длину последовательности, которую нельзя определить с помощью итератора.random.sample
возвращаетk
случайные элементы ,random.choice
возвращает один случайный элементЯ предполагаю, что вы подаете заявку на викторину. Для такого рода приложений я написал следующую функцию:
Если я дам ввод
questions = {'VENEZUELA':'CARACAS', 'CANADA':'TORONTO'}
и вызову функцию,shuffle(questions)
то вывод будет следующим:Вы можете расширить это еще больше, перетасовывая опции также
источник
selected_keys
. И вы, вероятно, будете повторять это около 100 раз. По крайней мере удалите взятые ключи q likedel(q[current_selection])
- вы можете перезаписать q новым shuffled,selected_keys
какq = selected_keys
после всего. Также не забывайте об идентификации! В качестве альтернативы посмотрите на мойnp.random.choice(...)
подход: stackoverflow.com/a/62843377/4575793Попробуйте это (используя random.choice из предметов)
источник
В современных версиях Python (с 3), объекты , возвращаемые методами
dict.keys()
,dict.values()
иdict.items()
являются объектами вид *. И эй может быть повторен, поэтому использование напрямуюrandom.choice
невозможно, так как теперь они не являются списком или набором.Одним из вариантов является использование списка для выполнения работы с
random.choice
:Ссылки:
источник
источник
Я нашел этот пост, ища довольно сопоставимое решение. Для выбора нескольких элементов из условия, это может быть использовано:
источник