因此,我编写了此代码,该代码首先列出了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/

10-11 06:49