gpt4 book ai didi

python - 请帮助我理解 Python 代码

转载 作者:太空宇宙 更新时间:2023-11-04 07:09:57 24 4
gpt4 key购买 nike

我正在尝试理解以下 python 代码,因为我是新手。

import random

howMany = random.randint(0,1000)
stats = {}
for i in range(howMany):
value = random.randint(0,500)
stats.setdefault(value,0)
stats[value]+=1
for item in stats:
if stats[item] > 1:
print item

这是我目前的理解,之后我的问题如下:

  1. howMany 存储在 0 和 1000 之间生成的随机数,包括两者。

  2. stats = {} 声明一个空字典

  3. i 将根据 howMany 的值运行。例如,如果 howMany是 2,所以 i 将运行两次,值为 01

  4. value 变量存储介于 0500 之间的随机数,包括两者

  5. 我不明白 stats.setdefault(value,0)。例如,value变量的值为4,那么stats.setdefault(4,0)是什么意思?

  6. stats[value]+=1 有什么作用? stats[value]+=1 的扩展形式是stats[value] = value + 1?

  7. 我理解了以下段落:

    for item in stats:
    if stats[item] > 1:
    print item

    stats 字典中打印那些大于 1 的值。如果我在某处有误,请纠正我。

最佳答案

5. dict.setdefault(key, default)这样做:

If key is in the dictionary, return its value. If not, insert key with a value of default and return default. default defaults to None.

因此它确保所有键都以 0 作为关联值开头。

stats.setdefault(value, 0)

因此等同于

if value not in stats:
stats[value] = 0

6. 不。但是这些是等价的(很好,glglgl):

stats[value] += 1
stats[value] = stats[value] + 1

它们在 stats 中导致两种不同的方法调用(__iadd____setitem__),因此对于某些对象它们确实不同,但在这里他们是等价的。有关这方面的示例,请参阅 Ashwini 的回答中的优秀链接。

7. 此代码打印出出现不止一次的所有值。

在 python 2.7+ 中,您的代码示例最好使用 collections.Counter 编写类:

import random
import collections

howMany = random.randint(0,1000)
stats = collections.Counter(random.randint(0, 500) for i in range(howMany))
for item in stats:
if stats[item] > 1:
print item

关于python - 请帮助我理解 Python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16436131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com