Python - 如何统计对象中数字的出现次数?

0 投票
5 回答
841 浏览
提问于 2025-04-17 14:59

我需要计算一个数字在一个对象中出现的次数。不太确定该怎么做。

我可以通过以下方式访问这些值:

>>> formset_sample.forms[0]._raw_value('type')
>>> '1'
>>> formset_sample.forms[1]._raw_value('type')
>>> '2'
>>> formset_sample.forms[2]._raw_value('type')
>>> '2'

这个对象的长度是3:

>>> len(formset_sample.forms)
>>> 3

我该如何获取数字2的出现次数呢?在这个例子中,数字'2'恰好出现了两次。

有没有什么提示呢?

祝好,

5 个回答

2

这段代码会生成一个字典,字典里用不同的类型作为键,出现的次数作为值。

import defaultdict
d = defaultdict(int)
for rv in formset_sample.forms:
  d[rv._raw_value_('type')] += 1
4

我不太明白你想要达到什么效果。不过,也许可以用 map 函数来帮你:

 values = map(lambda x: x._raw_value('type'), formset_sample.forms)
 # alternate Syntax:
 values = [form._raw_value('type') for form in formset_sample.forms]
 print values

这应该会给你一个数组

 ['1', '2', '2']

你可以把这个数组放进一个 Counter 里:

from collections import Counter
print Counter(values)

应该是这样的

{ '1': 1, '2': 2 }

所以如果你想把这些都放在一行里:

Counter([form._raw_value('type') for form in formset_sample.forms])["2"]
3

这段代码会给你一个数字列表,并计算出里面有多少个2:

l = [ f._raw_value('type') for f in formset_sample.forms ]
l.count('2') # I am assuming 2 is a string, or
l.count(2)   # if the number is stored as an integer

现在你可以用 l 来进行排序、切片等操作。

撰写回答