【问题标题】:How to convert dictionary into string如何将字典转换为字符串
【发布时间】:2012-05-06 18:08:54
【问题描述】:

我正在尝试使用here提供的解决方案

我如何获取具有相同输出的字符串而不是字典,即字符后跟出现次数

示例:d2m2e2s3

【问题讨论】:

  • 您希望字符串如何格式化?
  • 你能解释一下输入和输出吗?您是否要从字典中创建字符串Out[25]: {'d': 2, 'f': 2, 'g': 2, 'q': 5, 'w': 3}
  • 我希望输出为 d2f2g2q5w3

标签: python string


【解决方案1】:

从字典转换成你想要的格式的字符串:

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

如果您希望它们按字母顺序按键:

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

【讨论】:

  • 我希望每次出现在原始字符串中的字母都按顺序排列。
  • 我试过python 2.6,ValueError:格式中的零长度字段名称。应该是 ''.join('{0}{1}'.format(key, val) for key, val in adict.items())
  • 来自python 3.6:''.join(f'{k}{v}' for k,v in my_dict.items())
【解决方案2】:

这是你要找的吗?

#!/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 的列表理解和字符串连接更快
  • 我希望每次出现在原始字符串中的字母顺序
  • @San4ez,我也添加了加入示例。
【解决方案3】:
>>> 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'

【讨论】:

  • 我希望每次出现在原始字符串中的字母顺序
【解决方案4】:

一旦你有了 dict 解决方案,只需使用 join 将它们连接成一个字符串:

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

您可以将'' 替换为您想要的数字之间的任何分隔符(包括无分隔符)

【讨论】:

  • 所需的输出类型为:d2m2e2s3
  • 好的,我修改了答案以包含密钥(即字母)
  • 我希望每次出现在原始字符串中的字母顺序
【解决方案5】:

另一种方法,通过仅使用 join() 来避免 % 插值(或 format()):

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

【讨论】:

    猜你喜欢
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 2011-01-10
    • 2021-07-25
    相关资源
    最近更新 更多