15

ここで提供されるソリューションを使用しようとしています

辞書を取得する代わりに、同じ出力、つまり文字の後に出現回数が続く文字列を取得するにはどうすればよいですか

例:d2m2e2s3

4

5 に答える 5

46

辞書から必要な形式の文字列に変換するには:

''.join('{}{}'.format(key, val) for key, val in adict.items())

キーでアルファベット順に並べたい場合:

''.join('{}{}'.format(key, val) for key, val in sorted(adict.items()))
于 2012-05-06T18:26:59.653 に答える
3

これはあなたが探しているものですか?

#!/usr/bin/python

dt={'d': 2, 'f': 2, 'g': 2, 'q': 5, 'w': 3}
st=""
for key,val in dt.iteritems():
    st = st + key + str(val)

print st

出力:q5w3d2g2f2

それともこれ?

#!/usr/bin/python

dt={'d': 2, 'f': 2, 'g': 2, 'q': 5, 'w': 3}
dt=sorted(dt.iteritems())
st=""

for key,val in dt:
    st = st + key + str(val)

print st

出力:d2f2g2q5w3

join:

#!/usr/bin/python

adict=dt={'d': 2, 'f': 2, 'g': 2, 'q': 5, 'w': 3}
' '.join('{0}{1}'.format(key, val) for key, val in sorted(adict.items()))

出力:'d2 f2 g2 q5 w3'

于 2012-05-06T18:32:02.900 に答える
1

dict ソリューションを取得したら、 join を使用してそれらを文字列に結合します。

''.join([k+str(v) for k,v in result.iteritems()])

''を、数字の間に必要なセパレーター (なしを含む) に置き換えることができます

于 2012-05-06T18:21:37.477 に答える
1
>>> result = {'d': 2, 'f': 2, 'g': 2, 'q': 5, 'w': 3}
>>> ''.join('%s%d' % (k,v) for k,v in result.iteritems())
'q5w3d2g2f2'

または、アルファベット順に並べたい場合...

>>> ''.join('%s%d' % (k,v) for k,v in sorted(result.iteritems()))
'd2f2g2q5w3'

または、カウントの昇順にしたい場合...

>>> ''.join('%s%d' % (k,v) for k,v in sorted(result.iteritems(),key=lambda x:x[1]))
'd2g2f2w3q5'
于 2012-05-06T18:27:36.937 に答える
-1

%のみを使用して補間(またはformat()) を回避する別のアプローチjoin()

''.join(''.join((k, str(v))) for k,v in mydict.items())
于 2016-03-05T09:21:11.973 に答える