我正在尝试将字典转换为字符串
例如:
a={3:4,5:6}
s='3 4, 5 6'
我正在尝试的方式是
s=''
i=0
for (k,v) in d.items():
s=s+str(k)+' '+str(v)
while i < len(s):
if s[i]==str(v) and s[i+1]==str(k):
s+=s+s[i]+','+s[i+1]
答案 0 :(得分:5)
这是使用list comprehension:
的Pythonic方式s = ', '.join([str(x) + ' ' + str(a[x]) for x in a])
<强>输出:强>
'3 4, 5 6'
更新:提到Julien Spronck时,方括号([
和]
)不是必需的。因此,以下具有相同的效果:
s = ', '.join(str(x) + ' ' + str(a[x]) for x in a)
答案 1 :(得分:3)
您可以编写列表理解表达式来获取键值字符串列表,然后将其作为
加入,
>>> d = {3:4,5:6}
>>> ', '.join('{} {}'.format(k, v) for k, v in d.items())
'3 4, 5 6'
或者,甚至使用repr()
(注意:这是一个黑客攻击,我认为.join()
更接近pythonic ):
>>> repr(d)[1:-1].replace(':', '')
'3 4, 5 6'
答案 2 :(得分:1)
我会使用以下列表理解:
', '.join([str(k) + ' ' + str(v) for k, v in a.items()])
举例说明:
In [1]: a = {3:4, 5:6}
In [2]: s = ', '.join([str(k) + ' ' + str(v) for k, v in a.items()])
In [3]: s
Out[3]: '3 4, 5 6'
答案 3 :(得分:1)
当然最pythonic的解决方案是使用列表理解的解决方案(参见@SumnerEvans和其他人),但只是为了有替代方案,我将在此发布:
a = {3: 4, 5: 6}
v = str(a)
for rep in ['{', '}', ':']:
v = v.replace(rep, '')
print(v) # prints -> 3 4, 5 6
所有内容都可以转换为字符串并将其操作为一个字符串。这是在这里做的。从dict
到string
,然后链接replace
方法。
答案 4 :(得分:0)
你仍然可以像这样
s=''
i=0
a={3:4,5:6}
for (k,v) in a.items():
if i < len(a) and s == '':
s = s + str(k) + ' '+ str(v)
elif i < len(a) and s != '':
s += ", " + str(k) + ' '+ str(v)
i += 1
print(s)
这应该给你
s='3 4, 5 6'