用python中的字典制作字符串

时间:2019-02-25 19:43:44

标签: python string dictionary

我有一个字典,看起来像这样:

d = {'a': 'b', 'c': 'd'}

现在,当我使用str(d)制作str时,我得到了

>> "{'a': 'b', 'c': 'd'}"

但是我需要它看起来像这样:

>> "a=b; c=d; " 

我创建了执行以下操作的这段代码:

b = ''
for k, v in d.items():
    b += str(k) + '=' + str(v) + '; '

有没有一种方法可以达到相同的效果,但是可以使用内联操作或其他更整洁的方法来实现,而无需使用for循环?

4 个答案:

答案 0 :(得分:4)

她是使用''.join()的另一种方式:

';'.join(map('='.join, d.items()))

返回:

'a=b;c=d'

这假设最后一个;是多余的。如果没有,您将获得“精确”输出,如下所示:''.join([f'{k}={v}; ' for k,v in d.items()])


时间:

%timeit ';'.join(map('='.join, d.items()))          #1000000 loops,best of 3: 810 ns per loop
%timeit ';'.join(['='.join(x) for x in d.items()])  #1000000 loops,best of 3: 956 ns per loop
%timeit ';'.join([f'{k}={v}' for k,v in d.items()]) #1000000 loops,best of 3: 872 ns per loop

答案 1 :(得分:3)

赞:

d = {'a': 'b', 'c': 'd'}
strd = " ".join("{}={};".format(x, y) for x, y in d.iteritems()) # items() if python3

strd

"a=b; c=d;"

答案 2 :(得分:1)

如果您对=的签名不太满意,可以将其转换为json字符串

import json

json.dumps({'a': 'b', 'c': 'd'})

这也适用于嵌套字典。

答案 3 :(得分:0)

您可以使用魔术方法__repr__()获取对象的字符串表示形式:

d = {'a': 'b', 'c': 'd'}

d.__repr__()
# {'a': 'b', 'c': 'd'}

d.__repr__().replace(': ', '=').strip('{}')
# 'a'='b', 'c'='d'