Вы получаете доступ к словарю с помощью ключа, который возвращает только значение:
value = words[random.randint(0, 22)]
но если ваши ключи все целые числа, вы бы лучше использовать список вместо:
words = [{"wake up": "aaaa"}, {"look after": "bbbb"}, {"turn on": "cccc"}]
value = random.choice(words)
и пусть random.choice()
делать всю тяжелую работу по сбору одного в случайном порядке.
Вы можете использовать random.choice()
со значениями словаря тоже конечно:
value = random.choice(list(words.values()))
будет возвращать случайное значение из словаря, а также:
key, value = random.choice(list(words.items()))
возвратит случайный (key, value)
пар для вас.
Если вы имели в виду, чтобы извлечь хранимую словарь в ключ и значение, вы должны были бы извлечь только один ключ-значение пары из этого объекта; Вы не можете использовать кортеж распаковке на словарем:
>>> key, value = {'foo': 'bar'}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
, но это работает:
>>> key, value = next(iter({'foo': 'bar'}.items()))
>>> key, value
('foo', 'bar')
, но, возможно, вы должны хранить кортежи вместо словарей, если вы хотите, чтобы извлечь случайную пару ключ-значение, или храните ключи и значения напрямую в словаре words
.
Обратите внимание, что: 'random.choice (список (слов. values ())) 'является более длинным и, возможно, менее эффективным способом записи' random.choice (words) ' –
@JonClements: Нет, это совсем не то же самое. Это возвращает случайный * ключ *. –
@JonClements: Ах, здесь все целые числа; 'random.choice (dictionary)' ** обычно ** даже не работает. 'random.choice()' выбирает случайное целое число в диапазоне '[0, len (sequence))' и возвращает 'seq [selected_index]', что только по совпадению работает с этим словарем. –