Найти - Пользователи
Полная версия: Буквы и/или числа в строке
Начало » Python для новичков » Буквы и/или числа в строке
1 2 3 4 5 6
breidos
Есть строка вида:
ZZZZZxxxAA
Подскажите, как можно определить какие буквы и/или числа встречаются в этой строке, и их количество?

Вот я кое-что надумал:
x='ZZZZZxxxAA'
i=0
stroka=[]
for j in x:
if x[i]==x[i+1]:
stroka=x[i]+str(x.count(x[i]))
i=i+1
print stroka,
Но тут выводит только:
>>> 
Z5
А хотелось бы увидеть такое:
Z5 x3 A2
grok
x='ZZZZZxxxAA'
key=1
dic={}
i=0
while i < len(x)-1:
if x[i]==x[i+1]:
key+=1
dic[x[i]]=key
else:
key=1
i+=1
print dic.items()
Isem
x='ZZZZZxxxAA'
dic={}
for ch in x:
dic[ch] = dic.get(ch,0)+1
print( dic )
Или еще короче, но медленнее:
x='ZZZZZxxxAA'
print( { ch:x.count(ch) for ch in set(x) } )
grok
Isem
x='ZZZZZxxxAA'
dic={}
for ch in x:
dic[ch] = dic.get(ch,0)+1
print( dic )
Или еще короче, но медленнее:
x='ZZZZZxxxAA'
print( { ch:x.count(ch) for ch in set(x) } )
Первая конструкция мне очень понравилась (плохо я про словари почитал), а вот вторая, не знаю.. не нравятся мне длинные строки, но кому как удобно =)
breidos
Целый день пытаюсь доделать код в посте #1, но все безуспешно. Не могли бы помочь мне изменить именно #1 пост, потому что мне нужно чтобы результат был похож на - Z5 x3 A2. А в последующих постах он -{'A': 2, ‘x’: 3, ‘Z’: 5}
grok
Выводить словарь можешь вот так:
x='ZZZZZxxxAA'
dic={}
for ch in x:
dic[ch] = dic.get(ch,0)+1
for key, value in dic.items():
print key, value
Результат будет:
A 2
x 3
Z 5
apologize828
Словарь это неупорядоченная последовательность пар ключ-значение.
Если хотите чтобы все выводилось также как записано в словаре,то вместо обычного словаря используй Ordered dict или как там его)
Isem
Или так:
x='ZZZZZxxxAA'
dic={ ch : x.count(ch) for ch in set(x) }
print( ' '.join( k+str(n) for k,n in dic.items() ) )
Результат: A2 x3 Z5
Правда, непонятно будет, если вместо букв будут цифры.
Можно их разделить двоеточием, тогда вместо k+str(n) надо написать k+':'+str(n)
apologize828
Блин люди вас же просят
мне нужно чтобы результат был похож на - Z5 x3 A2. А в последующих постах он -{'A': 2, ‘x’: 3, ‘Z’: 5}
#python 3.1
from collections import OrderedDict
x='ZZZZZxxxAA'
dic=OrderedDict()
for ch in x:
dic[ch] = dic.get(ch,0)+1
for key, value in dic.items():
print (key, value)
>>>
Z 5
x 3
A 2
>>>
breidos
http://zalil.ru/29729292 - вот сюда закинул блок схему. Гляньте, может я неправильно сделал ее? Если правильно, то может я в питоне неправильно написал?:
x='ZZZZZxxxAA'
i=0
j=0
stroka=[]
while j<len(x)-1:
if x[i]!=x[i+1]:
print x[i]
i=i+1
else:
i=i+1
j=j+1
Результат у меня выходит такой:
>>>
Z x

П.С. Спасибо всем за помощь, но вы написали вещи которые непонятны, или не совсем понятны. Мне ведь это все еще нужно будет объяснять че и как работает :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB