6

各文字列がリストに表示される回数を確認するにはどうすればよいですか?

私が言葉を持っているとしましょう:

"General Store"

それは私のリストに20回ほどあります。リストに 20 回表示されていることを確認するにはどうすればよいですか? "poll vote"その数を回答のタイプとして表示できるように、これを知る必要があります。

例えば:

General Store - voted 20 times
Mall - voted 50 times
Ice Cream Van - voted 2 times

これに似た方法で表示するにはどうすればよいですか?:

General Store
20
Mall
50
Ice Cream Van
2
4

8 に答える 8

17

メソッドを使用しcountます。例えば:

(x, mylist.count(x)) for x in set(mylist)
于 2012-08-03T17:49:44.173 に答える
7

他の回答 (list.count を使用) は機能しますが、大きなリストでは非常に遅くなる可能性があります。

http://docs.python.org/library/collections.htmlcollections.Counterで説明されているように、 の使用を検討してください。

例:

>>> # Tally occurrences of words in a list
>>> cnt = Counter()
>>> for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
...     cnt[word] += 1
>>> cnt
Counter({'blue': 3, 'red': 2, 'green': 1})
于 2012-08-03T18:00:25.673 に答える
2

簡単な例:

   >>> lis=["General Store","General Store","General Store","Mall","Mall","Mall","Mall","Mall","Mall","Ice Cream Van","Ice Cream Van"]
   >>> for x in set(lis):
        print "{0}\n{1}".format(x,lis.count(x))


    Mall
    6
    Ice Cream Van
    2
    General Store
    3
于 2012-08-03T17:53:38.253 に答える
1

私は、次のような問題に対する 1 行の解決策が好きです。

def tally_votes(l):
  return map(lambda x: (x, len(filter(lambda y: y==x, l))), set(l))
于 2012-08-03T18:14:14.443 に答える
1

辞書を使用できます。リストの代わりに最初から辞書を使用することを検討したい場合がありますが、ここでは簡単な設定を示します。

#list
mylist = ['General Store','Mall','Ice Cream Van','General Store']

#takes values from list and create a dictionary with the list value as a key and
#the number of times it is repeated as their values
def votes(mylist):
d = dict()
for value in mylist:
    if value not in d:
        d[value] = 1
    else:
        d[value] +=1

return d

#prints the keys and their vaules
def print_votes(dic):
    for c in dic:
        print c +' - voted', dic[c], 'times'

#function call
print_votes(votes(mylist))

以下を出力します。

Mall - voted 1 times
Ice Cream Van - voted 1 times
General Store - voted 2 times
于 2013-09-29T01:13:32.977 に答える
1

最初に set() を使用して、リストのすべての一意の要素を取得します。次に、セットをループして、リストから要素をカウントします

unique = set(votes)
for item in unique:
    print item
    print votes.count(item)
于 2012-08-03T17:55:36.783 に答える