除了随机导入之外,我无法导入任何其他内容。目标是从字典创建一个列表,其中键的值指示单词(键)将在列表中出现的次数。然后从这个列表中,随机选择一个单词并返回每个单词被选择的次数。
期望的返回值分别是100、300、200。我不断得到全零的返回值。
import random
def weighted_choice(counts):
list = []
for key in counts.keys():
n = counts[key]
for i in range(n):
list.append(key)
choice = random.choice(list)
occurances = []
occurances.append(choice)
counter = occurances.count(choice)
return counter
if __name__ == '__main__':
results = []
for i in range(600):
item = weighted_choice({'green': 1, 'eggs': 3, 'ham':2})
results.append(item)
print(results.count('green')) #about 100
print(results.count('eggs')) #about 300
print(results.count('ham')) #about 200
这句话的措辞非常糟糕。说实话我还是不明白你在说什么。您还错误地拼写了“发生”。这是面试问题还是什么?
您可以创建数组并选择一个随机值,如下所示:
arr = [k for k, v in d_inp.items() for _ in range(v)]
return random.choice(arr)
这里需要用到
random.choices()
功能。
import random
dictionary = {'green': 1, 'eggs': 3, 'ham':2}
words, weights = [], []
for word,count in dictionary.items():
words.append(word)
weights.append(count)
if __name__ == '__main__':
results = []
for i in range(600):
item = random.choices(words,weights)[0]
results.append(item)
print(results.count('green')) #about 100
print(results.count('eggs')) #about 300
print(results.count('ham')) #about 200