Python - 如何计算对象内部数字的出现次数?

时间:2013-02-06 16:49:39

标签: python

我需要计算对象中数字的出现次数。不知道怎么做。

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

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

此对象具有len()= 3:

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

如何获得2号的出现次数?在这种情况下,数字'2'恰好有两次出现。

一些线索?

最诚挚的问候,

5 个答案:

答案 0 :(得分: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"]

答案 1 :(得分: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进行排序,切片等。

答案 2 :(得分:2)

这将产生一个字典,其中包含不同类型的键和出现次数作为值:

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

答案 3 :(得分:0)

a = {1:1, 2:1, 3:2}
print a.values().count(1)

答案 4 :(得分:0)

count = sum(f._raw_value('type') == '2' for f in formset_sample.forms)