2017-10-21 85 views
3

我有一个字典。重新组织字典在Python中的最佳方式

some_dict = {'cars': 'Audi', 'price': '50k', 'year': '2016'}. 

而且我想要一个字符串:

cars=Audi, price=50k, year=2016 

我不知道,什么是做的最好的方法是什么? 总是有一些这样的选项:

response = '' 
    for key, value in some_dict.items(): 
     response += (str(key) + '=' + str(value) + ', ') 
    response[-1]='.' # for replacing comma to a point 

但它似乎并没有成为一个优秀的决定.. 我相信有一个更好的办法。

+1

* ''。加入( '=' 连接(KV)在dict.items千伏(。 ))* – 0andriy

回答

4
some_dict = {'cars': 'Audi', 'price': '50k', 'year': '2016'} 
', '.join('='.join(i) for i in some_dict.items()) 

输出:

'cars=Audi, price=50k, year=2016' 
+0

你可以跳过方括号,并且不仅会减少两个字符,而不是列表理解,你将拥有生成器表达式,这将更有效,因为不需要为临时列表分配内存。 – Bunyk

+0

@Bunyk - 对啊,谢谢! – Transhuman

4

更好的单行和清洁的方法是:

print ", ".join(map(lambda x:"=".join(x), some_dict.items())) 

首先,我们同所有的key, value对与"="标志得到的字符串,其中的列表键和值加入"=",然后我们再次.join()此列表与", "

要添加更多的语法糖通过@ juanpa.arrivillaga的建议,你可以简单地使用:

print ", ".join(map("=".join, some_dict.items())) 
+3

您可以使用''='。join'不需要lambda –

+0

您应该删除lambda解决方案 – styvane

+0

但我想,lambda解决方案提供了一些更好的洞察力,真正发生的事情是@sstyvane,但是juanpa.arrivillaga解决方案是我承认更多Pythonic。 – ZdaR