我需要计算对象中数字的出现次数。不知道怎么做。
我可以通过这种方式访问这些值:
>>> 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'恰好有两次出现。
一些线索?
最诚挚的问候,
答案 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)