【发布时间】:2012-05-06 18:08:54
【问题描述】:
【问题讨论】:
-
您希望字符串如何格式化?
-
你能解释一下输入和输出吗?您是否要从字典中创建字符串
Out[25]: {'d': 2, 'f': 2, 'g': 2, 'q': 5, 'w': 3} -
我希望输出为 d2f2g2q5w3
【问题讨论】:
Out[25]: {'d': 2, 'f': 2, 'g': 2, 'q': 5, 'w': 3}
从字典转换成你想要的格式的字符串:
''.join('{}{}'.format(key, val) for key, val in adict.items())
如果您希望它们按字母顺序按键:
''.join('{}{}'.format(key, val) for key, val in sorted(adict.items()))
【讨论】:
''.join(f'{k}{v}' for k,v in my_dict.items())
这是你要找的吗?
#!/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'
【讨论】:
join 的列表理解和字符串连接更快
>>> 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'
【讨论】:
一旦你有了 dict 解决方案,只需使用 join 将它们连接成一个字符串:
''.join([k+str(v) for k,v in result.iteritems()])
您可以将'' 替换为您想要的数字之间的任何分隔符(包括无分隔符)
【讨论】:
另一种方法,通过仅使用 join() 来避免 % 插值(或 format()):
''.join(''.join((k, str(v))) for k,v in mydict.items())
【讨论】: