Я пытаюсь использовать решение при условии hereКак конвертировать словарь в строку
Вместо того, чтобы словарь, как я могу получить строку с тем же выходом, т.е. символ, за которым следует число вхождений
Пример: d2m2e2s3
Я пытаюсь использовать решение при условии hereКак конвертировать словарь в строку
Вместо того, чтобы словарь, как я могу получить строку с тем же выходом, т.е. символ, за которым следует число вхождений
Пример: d2m2e2s3
Для преобразования из Dict в строку в формате, который вы хотите:
''.join('{}{}'.format(key, val) for key, val in adict.items())
, если вы хотите их в алфавитном порядке по ключ:
''.join('{}{}'.format(key, val) for key, val in sorted(adict.items()))
Я хочу буквы, за которыми следуют каждый раз, когда они произошли в исходной строке по порядку. – TechacK
Я пробовал python 2.6, ValueError: имя поля нулевой длины в формате. должен быть '. .join (' {0} {1} '. format (ключ, val) для ключа, val в adict.items()) –
После того, как у вас есть решение Dict, просто использовать присоединиться к ним присоединиться в строку:
''.join([k+str(v) for k,v in result.iteritems()])
Вы можете заменить ''
с любой separater (не включая ни одного) вы хотите между числами
>>> 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'
Я хочу, чтобы буквы сопровождались каждый раз, когда он произошел в исходной строке, в порядке – TechacK
Это то, что вы ищете?
#!/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'
Другой подход, избегая %
интерполяции (или format()
) с помощью join()
только:
''.join(''.join((k, str(v))) for k,v in mydict.items())
Как вы хотите, чтобы строка была отформатирована? – Amber
Можете ли вы объяснить ввод и вывод? Вы пытаетесь сделать строку из словаря 'Out [25]: {'d': 2, 'f': 2, 'g': 2, 'q': 5, 'w': 3} ' – shibly
I хотите выход как d2f2g2q5w3 – TechacK