python-3.x - 使用列表而不是字典来组织结果
问题描述
我试图让我的代码在下面工作,以使结果有条理而不是随机的。
这就是现在正在发生的事情。
sum = 9 count = 117
sum = 6 count = 142
sum = 3 count = 58
sum = 7 count = 172
sum = 8 count = 129
sum = 5 count = 109
sum = 4 count = 87
sum = 11 count = 53
sum = 12 count = 31
sum = 10 count = 72
而我想要实现的是
sum = 1 count = 117
sum = 2 count = 142
sum = 3 count = 58
sum = 4 count = 172
sum = 5 count = 129
sum = 6 count = 109
sum = 7 count = 87
sum = 8 count = 53
sum = 12 count = 31
等。同时省略任何尚未滚动的数字。理想情况下,我希望使用列表而不是字典,但每次尝试时都会遇到不同的错误。目前这会输出金额,但不是按顺序输出。
import random
print("results")
occurrences = []
for i in range(1000):
die1 = random.randint(1, 6)
die2 = random.randint(1, 6)
roll = die1 + die2
current = occurrences[roll, ]
occurrences[roll] = current + 1
for roll, count in occurrences[]
print(f"sum = {roll} count = {count}")
解决方案
基于字典的滚动发生计数的方法是:
首先初始化字典中的所有滚动可能性(下面的示例使用字典理解),其中字典键是滚动值,字典值是相应的出现。
每次使用
+=1
语句发生滚动时计数(就地加起来 1)。使用对排序后的字典值(这里是每个卷的出现)操作的另一个字典理解对字典进行排序。
循环遍历字典键(滚动)和相应的值(出现)以显示输出。
这是包含上述语句的代码:
import random
print("results")
occurrences = {k: 0 for k in range(2, 13)}
for i in range(10000):
die1 = random.randint(1, 6)
die2 = random.randint(1, 6)
roll = die1 + die2
occurrences[roll] += 1
occurrences = {k: v for k, v in sorted(occurrences.items(), key=lambda item: item[1], reverse=True)}
for roll, count in occurrences.items():
print(f"sum = {roll} count = {count}")
以 10,000 次滚动输出以下结果:
sum = 7 count = 1653
sum = 6 count = 1398
sum = 8 count = 1325
sum = 5 count = 1162
sum = 9 count = 1142
sum = 10 count = 842
sum = 4 count = 812
sum = 11 count = 578
sum = 3 count = 540
sum = 2 count = 295
sum = 12 count = 253
推荐阅读
- python - PySpark fails to select column after pivot
- excel - 如何计算特定范围内仅包含数字的单元格数量,忽略文本和空单元格
- javascript - 为什么只更新第一行的函数效果?
- bash - 我的 PyCharm 在 Linux Mint 中以 /usr/bin/sh 而不是 /bin/bash 开头,并且不手动更改
- javascript - 如果任何元素内的所有 html 元素都被隐藏,则隐藏特定的 html 元素
- javascript - ionic 4 ion-item 在同一行显示数据。如果数据太长,则只显示能显示的数据
- java - 在本机应用程序中膨胀类 com.jjoe64.graphview.GraphView 时出错
- bash - complete -E 完成设置
- hyperledger-fabric - 在 Hyperledger Fabric 2.0 错误中实现私有数据收集
- vb.net - Directory.Enumerate Files - 需要通过严格的文件扩展名过滤