将字典转换为字符串python

时间:2016-11-09 16:51:38

标签: python string dictionary

我正在尝试将字典转换为字符串

例如:

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]

5 个答案:

答案 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)

Working PythonFiddle

答案 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

所有内容都可以转换为字符串并将其操作为一个字符串。这是在这里做的。从dictstring,然后链接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'