如何计算并返回从Python列表中随机选择的单词出现的次数?

问题描述 投票:0回答:2

除了随机导入之外,我无法导入任何其他内容。目标是从字典创建一个列表,其中键的值指示单词(键)将在列表中出现的次数。然后从这个列表中,随机选择一个单词并返回每个单词被选择的次数。

期望的返回值分别是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
python list function random count
2个回答
0
投票

这句话的措辞非常糟糕。说实话我还是不明白你在说什么。您还错误地拼写了“发生”。这是面试问题还是什么?

您可以创建数组并选择一个随机值,如下所示:

arr = [k for k, v in d_inp.items() for _ in range(v)]
return random.choice(arr)

0
投票

这里需要用到

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
© www.soinside.com 2019 - 2024. All rights reserved.