1

重複の可能性:
Pythonでリスト項目の出現を計算する方法は?

私は一種の世論調査を行っています。そのために、私は Python を使用しています。私が立ち往生している部分は、「General Store」が表示されるなど、特定のものの回数を数える方法を見つけようとしています。

世論調査の例:

広告を最もよく目にするのはどこですか。

  1. 雑貨店

  2. スーパーマーケット

  3. モール

  4. 小規模店舗

その情報が必要な場合、投票データはラジオ ボタンを介して送信されます。これらの回答はすべてリストに追加され、それぞれの項目が何回投票されたかを示す結果ページを作成したいと考えています。

4

5 に答える 5

7

これは機能します:

>>> from collections import Counter
>>> data = ['Store', 'Office', 'Store', 'Office', 'Home', 'Nowhere']
>>> Counter(data)
Counter({'Office': 2, 'Store': 2, 'Home': 1, 'Nowhere': 1})
于 2012-08-02T23:07:34.990 に答える
3

まず第一に、投票結果の問題に対して間違ったソリューションを使用している可能性があります。オプションごとにカウンターを保持しないのはなぜですか。この方法では、ファイル、またはこのデータを保存するために使用しているバックエンドは、応答が入って​​も直線的に増加しません.

その方が簡単な理由は、とにかくカウンターを作成するためです。ここでの唯一の違いは、応答ページが読み込まれるたびにすべてのアイテムをカウントする必要があることです。

#initializing a variable with some mock poll data
option1 = "general store"
option2 = "supermarket"
option3 = "mall"
option4 = "small store"

sample_data = [option1,option2,option1,option1,option3,option3,option4,option4,option4,option2]

#a dict that will store the poll results
results = {}

for response in sample_data:
    results[response] = results.setdefault(response, 0) + 1

これで、結果には、リスト内で発生したすべての文字列がキーとして、発生した回数が値として含まれます。

于 2012-08-02T23:07:38.840 に答える
2

Python 2.7 以降の場合は、次を使用できます。collections.Counter

>>> from collections import Counter
>>> l = ['hello','hello','hello','there','foo','foo','bar']
>>> Counter(l).most_common()
[('hello', 3), ('foo', 2), ('there', 1), ('bar', 1)]

2.7 を使用していない場合は、代わりにこれを行うことができます。

>>> s = set(l)
>>> d = {}
>>> for i in s:
...    d[i] = l.count(i)
... 
>>> d
{'there': 1, 'bar': 1, 'hello': 3, 'foo': 2}
于 2012-08-02T23:08:19.727 に答える
2

使いたくなるcollections.Counter

そして.most_common方法。

于 2012-08-02T22:57:42.853 に答える
1

リストがあればできる

ls = ["Mall", "Mall", "Supermarket"]
ls.count("Mall")
>>> 2
ls.count("General Store")
>>> 0
于 2012-08-02T22:59:44.573 に答える