Как получить количество вхождений каждого символа с помощью Python - PullRequest
4 голосов
/ 04 марта 2011

это строка:

a='dqdwqfwqfggqwq'

как узнать количество вхождений каждого персонажа

мой босс сказал мне, что для этого используется только одна строка,

так что я могу сделать,

спасибо

Ответы [ 7 ]

18 голосов
/ 04 марта 2011

В 2.7 и 3.1 есть инструмент под названием Counter:

>>> import collections
>>> results = collections.Counter("dqdwqfwqfggqwq")
>>> results
Counter({'q': 5, 'w': 3, 'g': 2, 'd': 2, 'f': 2})

Docs . Как указано в комментариях, он не совместим с 2.6 или ниже, но он backported .

10 голосов
/ 04 марта 2011

Не очень эффективно, но в одну строку ...

In [24]: a='dqdwqfwqfggqwq'

In [25]: dict((letter,a.count(letter)) for letter in set(a))
Out[25]: {'d': 2, 'f': 2, 'g': 2, 'q': 5, 'w': 3}
1 голос
/ 10 июня 2018

Вы можете сделать это:

listOfCharac={}
for s in a:
    if s in listOfCharac.keys():
        listOfCharac[s]+=1
    else:
        listOfCharac[s]=1
print (listOfCharac)

Выход {'d': 2, 'f': 2, 'g': 2, 'q': 5, 'w': 3}

Этот метод также эффективен и протестирован для python3.

1 голос
/ 29 марта 2017

(для дальнейшего использования)

Это сравнение производительности различных подходов может представлять интерес.

0 голосов
/ 14 марта 2018

однострочный код для нахождения вхождения каждого символа в строке.

для i в set (a): print ('% s count% d'% (i, a.count (i)))

0 голосов
/ 24 ноября 2017
lettercounts = {}
for letter in a:
    lettercounts[letter] = lettercounts.get(letter,0)+1
0 голосов
/ 04 марта 2011

Для каждой буквы подсчитайте разницу между строкой с этой буквой и без нее, чтобы вы могли получить ее число вхождений

a="fjfdsjmvcxklfmds3232dsfdsm"
dict(map(lambda letter:(letter,len(a)-len(a.replace(letter,''))),a))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...