Форум сайта python.su
Есть строка вида:
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
Отредактировано (Сен. 26, 2010 10:57:29)
Офлайн
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()
Офлайн
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) } )
Отредактировано (Сен. 26, 2010 13:12:55)
Офлайн
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) } )
Офлайн
Целый день пытаюсь доделать код в посте #1, но все безуспешно. Не могли бы помочь мне изменить именно #1 пост, потому что мне нужно чтобы результат был похож на - Z5 x3 A2. А в последующих постах он -{'A': 2, ‘x’: 3, ‘Z’: 5}
Офлайн
Выводить словарь можешь вот так:
x='ZZZZZxxxAA'
dic={}
for ch in x:
dic[ch] = dic.get(ch,0)+1
for key, value in dic.items():
print key, value
Офлайн
Словарь это неупорядоченная последовательность пар ключ-значение.
Если хотите чтобы все выводилось также как записано в словаре,то вместо обычного словаря используй Ordered dict или как там его)
Офлайн
Или так:
x='ZZZZZxxxAA'
dic={ ch : x.count(ch) for ch in set(x) }
print( ' '.join( k+str(n) for k,n in dic.items() ) )
Отредактировано (Сен. 26, 2010 14:53:41)
Офлайн
Блин люди вас же просят
мне нужно чтобы результат был похож на - 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
>>>
Отредактировано (Сен. 26, 2010 15:01:23)
Офлайн
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
Отредактировано (Сен. 26, 2010 15:30:00)
Офлайн