我有一个字典,看起来像这样:
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循环?
答案 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'