<p>最快的方法(据我所知)是从集合中使用<code>Counter()</code>(仅dict替换见底部):</p>
<pre><code>import random
from collections import Counter
# create our 6-sided dice
sides = range(1,7)
num_throws = 1000
# generates num_throws random values and counts them
counter = Counter(random.choices(sides, k = num_throws))
print (counter) # Counter({1: 181, 3: 179, 4: 167, 5: 159, 6: 159, 2: 155})
</code></pre>
<ul>
<li><p><a href="https://docs.python.org/3/library/collections.html#collections.Counter" rel="nofollow noreferrer">^{<cd2>}</a>)是一个专门的字典,它统计给定的iterable中出现的次数。</p></li>
<li><p><a href="https://docs.python.org/3/library/random.html#random.choices" rel="nofollow noreferrer">^{<cd3>}</a>使用给定的iterable(范围(1,7)==1,2,3,4,5,6并从中提取<code>k</code>个东西,并将它们作为list返回。</p></li>
<li><p><a href="https://docs.python.org/3/library/functions.html#func-range" rel="nofollow noreferrer">^{<cd5>}</a>生成一个不可变的序列,使<code>random.choices</code>的性能比使用列表时更好。</p></li>
</ul>
<hr/>
<p>作为更完整的程序,包括输入面数和投掷数,并进行验证:</p>
^{pr2}$
<p>输出:</p>
<pre><code>How many sides on the dice? [4+] <b>1</b>
Try gain, number must be 4 or more
How many sides on the dice? [4+] <b>a</b>
Try gain, number must be 4 or more
How many sides on the dice? [4+] <b>5</b>
How many throws? [1+] <b>-2</b>
Try gain, number must be 1 or more
How many throws? [1+] <b>100</b>
Number 1 occured 22 times
Number 2 occured 20 times
Number 3 occured 22 times
Number 4 occured 23 times
Number 5 occured 13 times</code></pre>
<p>您正在使用python2.x方式格式化字符串输出,请阅读关于<a href="https://docs.python.org/3/library/stdtypes.html#str.format" rel="nofollow noreferrer">^{<cd7>}</a>及其<a href="https://docs.python.org/3/library/string.html#format-examples" rel="nofollow noreferrer">format examples</a>的内容。在</p>
<p>看看验证来自用户的输入的非常好的答案:<a href="https://stackoverflow.com/questions/23294658/asking-the-user-for-input-until-they-give-a-valid-response">Asking the user for input until they give a valid response</a></p>
<hr/>
<p>如果不允许使用<code>Counter</code>,请替换它:</p>
<pre><code># create a dict
d = {}
# iterate over all values you threw
for num in [1,2,2,3,2,2,2,2,2,1,2,1,5,99]:
# set a defaultvalue of 0 if key not exists
d.setdefault(num,0)
# increment nums value by 1
d[num]+=1
print(d) # {1: 3, 2: 8, 3: 1, 5: 1, 99: 1}
</code></pre>