random.choice from set?
list, python, random, set
Solution
Note (Oct. 2020): as of v3.9, Python has officially deprecated `random.sample()` working on sets, with the official guidance being to explicitly convert the set to a list or tuple before passing it in, though this doesn't solve the efficiency problems.
>>> random.sample(set('abcdefghijklmnopqrstuvwxyz'), 1)
['f']
Documentation: https://docs.python.org/3/library/random.html#random.sample
Note that choosing random elements from a set is extremely inefficient no matter how you do it - it takes time proportional to the size of the set, or worse if the set's underlying hash table is sparse due to removed elements.
Instead, you should probably use a different data structure that supports this operation efficiently.
Problem
I'm working on an AI portion of a guessing game. I want the AI to select a random letter from this list. I'm doing it as a set so I can easily remove letters from the list as they are guessed in the game and are therefore no longer available to be guessed again. it says `set` object isn't indexable. How can I work around this? ``` import random aiTurn = True while aiTurn == True: allLetters = set(list('abcdefghijklmnopqrstuvwxyz')) aiGuess = random.choice(allLetters) print(aiGuess) ```