0

オブジェクト内の数字の出現回数を数える必要があります。方法がわからない。

この方法で値にアクセスできます。

>>> 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」には正確に2つのオカレンスがあります。

いくつかの手がかり?

よろしくお願いします、

4

5 に答える 5

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 }

したがって、すべてを1行にまとめたい場合は、次のようにします。

Counter([form._raw_value('type') for form in formset_sample.forms])["2"]
于 2013-02-06T16:53:50.027 に答える
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これで、並べ替え、スライスなどに使用できます。

于 2013-02-06T16:53:08.990 に答える
2

これにより、キーとしてさまざまなタイプ、値として出現回数を含む辞書が作成されます。

import defaultdict
d = defaultdict(int)
for rv in formset_sample.forms:
  d[rv._raw_value_('type')] += 1
于 2013-02-06T16:55:25.813 に答える
0
a = {1:1, 2:1, 3:2}
print a.values().count(1)
于 2013-02-06T16:57:35.823 に答える
0
count = sum(f._raw_value('type') == '2' for f in formset_sample.forms)
于 2013-02-06T16:58:30.503 に答える