1
x = [['a', 'b', 'c'], ['a', 'c', 'd'], ['e', 'f', 'f']]

ランダムな str 文字のリストがあるとします。関数を作成して、文字「a」が何回出てくるかを教えてくれます。この場合は 2 です。または、「b」のような他の文字は 1 回出て、「f」は 2 回出てきます。など ありがとうございます!

4

3 に答える 3

6

リストを平坦化して使用できますcollections.Counter

>>> import collections
>>> x = [['a', 'b', 'c'], ['a', 'c', 'd'], ['e', 'f', 'f']]
>>> d = collections.Counter(e for sublist in x for e in sublist)
>>> d
Counter({'a': 2, 'c': 2, 'f': 2, 'b': 1, 'e': 1, 'd': 1})
>>> d['a']
2
于 2013-03-01T06:28:45.537 に答える
1
import itertools, collections
result = collections.defaultdict(int)
for i in itertools.chain(*x):
    result[i] += 1

resultこれにより、文字をキーとし、その数を値とする辞書が作成されます。

于 2013-03-01T06:28:29.343 に答える
0

sum()参考までに、単一のネストされたリストをフラット化するために使用できます。

>>> from collections import Counter
>>>
>>> x = [['a', 'b', 'c'], ['a', 'c', 'd'], ['e', 'f', 'f']]
>>> c = Counter(sum(x, []))
>>> c
Counter({'a': 2, 'c': 2, 'f': 2, 'b': 1, 'e': 1, 'd': 1})

しかし、Blender と John Clements が述べたように、itertools.chain.from_iterable()もっと明確かもしれません。

>>> from itertools import chain
>>> c = Counter(chain.from_iterable(x)))
>>> c
Counter({'a': 2, 'c': 2, 'f': 2, 'b': 1, 'e': 1, 'd': 1})
于 2013-03-01T06:54:15.767 に答える