web-dev-qa-db-fra.com

Comment convertir un dictionnaire en chaîne

J'essaye d'utiliser la solution fournie ici

Au lieu d'obtenir un dictionnaire, comment puis-je obtenir une chaîne avec la même sortie, c'est-à-dire un caractère suivi du nombre d'occurrences

Exemple: d2m2e2s3

12
TechacK

Pour convertir le dict en chaîne au format souhaité:

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

si vous voulez les classer par ordre alphabétique par clé:

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

Est-ce ce que vous recherchez?

#!/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

production: q5w3d2g2f2

Ou ca?

#!/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

production: d2f2g2q5w3

Exemple avec 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()))

production: 'd2 f2 g2 q5 w3'

3
shibly

Une fois que vous avez la solution dict, utilisez simplement join pour les joindre en une chaîne:

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

Vous pouvez remplacer le '' avec le séparateur (y compris aucun) que vous voulez entre les nombres

1
happydave
>>> result = {'d': 2, 'f': 2, 'g': 2, 'q': 5, 'w': 3}
>>> ''.join('%s%d' % (k,v) for k,v in result.iteritems())
'q5w3d2g2f2'

ou si vous les voulez par ordre alphabétique ...

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

ou si vous les voulez par ordre croissant de nombre ...

>>> ''.join('%s%d' % (k,v) for k,v in sorted(result.iteritems(),key=lambda x:x[1]))
'd2g2f2w3q5'
1
Amber

Une autre approche, évitant l'interpolation % (Ou format()) en utilisant uniquement join():

''.join(''.join((k, str(v))) for k,v in mydict.items())
0
MestreLion