因此,我编写了此代码,该代码首先列出了1000卷。然后我编写了一个函数,该函数使用字典来确定每次掷骰的频率。然后我要打印发生最多的纸卷及其频率。
import random
L = []
for i in range(1000):
currentRoll = random.randint(1, 6)
L.append(currentRoll)
def diceFreq(L):
rollCount = {}
for roll in L:
if roll not in rollCount:
rollCount[roll] = 1
else:
rollCount[roll] += 1
print(rollCount)
print(max(rollCount, key=rollCount.get))
print(max(rollCount.values()))
diceFreq(L)
我不明白
print(max(rollCount, key=rollCount.get))
到底是做什么的? 最佳答案
Max将收到一个可迭代的对象并评估最大值。
即:
max([1,2,3]) # >> returns 3
max("abc") # >> returns 'c'
max({"a": 10, "b": 5}) # >> returns 'b'
您的
rollCount
是一个默认情况下将迭代键的字典。但是,当您在max函数中添加
key
时,它将根据您设置的可调用对象评估被视为max
的值。即:
max([1,2,3], key=lambda x: -x) # >> returns 1
在这种情况下,它将在将最大值发送给可调用对象之后进行比较。
(1,2,3在比较时变为-1,-2,-3,但将返回原始值)。
当您从字典中调用
.get
时,它将期望传递key
。当您这样做时:d = {"a": 10, "b": 5}
max(d, key=d.get) # returns 'a'
而不是比较
'a' >= 'b'
,它将执行d.get('a') >= d.get('b')
。d.get('a') # >> 10
d.get('b') # >> 5
在这种情况下返回
'a'
。关于python - 掷骰子的频率,然后获得最多的掷骰子,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59147802/