python:字典到字符串,自定义格式?

时间:2011-12-15 11:46:33

标签: python string dictionary

目前我只显示按键,每个按键都在新行中显示:

'<br/>'.join(mydict)

如何在新行中显示 key :: value

5 个答案:

答案 0 :(得分:75)

浏览将产生键值元组的dict.items()迭代器:

'<br/>'.join(['%s:: %s' % (key, value) for (key, value) in d.items()])

答案 1 :(得分:4)

那是一个更酷的解决方案,使用join来加入项(键,值)对,避免现在过时的%插值,仅使用单个虚拟变量_,并删除冗余列表解析:

"<br/>".join(":: ".join(_) for _ in mydict.items())

请注意,dicts没有排序,因此如果没有sorted(),您可能无法获得所需内容:

>>> mydict = dict(a="A", b="B", c="C")
>>> ", ".join("=".join(_) for _ in mydict.items())
'a=A, c=C, b=B'

这也适用于所有键和值都是字符串的情况,否则join会抱怨。一个更强大的解决方案是:

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

现在它的效果很好,即使是混合类型的键和值:

>>> mydict = {'1':1, 2:'2', 3:3}
>>> ", ".join("=".join((str(k),str(v))) for k,v in mydict.items())
'2=2, 3=3, 1=1'

当然,对于混合类型,普通sorted()将无法按预期工作。仅当您知道所有键都是字符串(或所有数字等)时才使用它。在前一种情况下,您也可以删除第一个str()

>>> mydict = dict(a=1, b=2, c=2)
>>> ", ".join("=".join((k,str(v))) for k,v in sorted(mydict.items()))
'a=1, b=2, c=3'

答案 2 :(得分:4)

在python 3.6中,我更喜欢这种语法,这使得代码更具可读性:

'<br/>'.join([f'{key}: {value}' for key, value in d.items()])

请参阅PEP 498 -- Literal String Interpolation

答案 3 :(得分:1)

我喜欢FilipDupanović上面做的事。我使用str.format方法将其修改为python3-ish。

'<br/>'.join(['{0}:: {1}'.format(key, value) for (key, value) in d.items()])

我修改了上面的内容以生成一个我可以提供给SQL表创建语句的字符串。

fieldpairs = ','.join(['{0} {1}'.format(key, value) for (key, value) in HiveTypes.items()])

答案 4 :(得分:1)

如果您想成为 more pythonic的用户,我们可以完全删除对for的理解。

'<br/>'.join(map(':: '.join, mydict.items())