将字典转换为字符串

时间:2014-01-10 13:40:16

标签: python string dictionary

我有

  dic = {'value': '123','sort': 'desc','type': 'float'} 

我希望它变成字符串:

 str = 'value=123&sort=desc&type=float'

我该怎么做?

由于

4 个答案:

答案 0 :(得分:7)

像这样:

>>> d = {'value':'123','sort':'desc','type':'float'}
>>> "&".join(["{}={}".format(k, v) for k, v in d.items()])
'sort=desc&type=float&value=123'
>>> 

正如许多评论所指出的那样;如果这是用于HTTP请求,请使用urllib.urlencode函数。

>>> from urllib import urlencode
>>> urlencode(d)
'sort=desc&type=float&value=123'
>>> 

答案 1 :(得分:6)

也可以使用urllib

完成
import urllib
d = {'value':'123','sort':'desc','type':'float'}
urllib.urlencode(d)
'sort=desc&type=float&value=123'

答案 2 :(得分:1)

如果您关心字符串元素的顺序,则不会使用字典,因为项目未按特定顺序存储。请改用OrderedDict。

除非结果字符串的格式始终相同,否则您可以使用格式表示法

>>> dic={'value':'123','sort':'desc','type':'float'} 
>>> str='value={value}&sort={sort}&type={type}'.format(**dic)

答案 3 :(得分:-3)

dic={'value':'123','sort':'desc','type':'float'}     
str=''
for i in dic:
    str = str + i + '=' + dic[i] + '&'
str[:-1]

或者使用list comprehension和reduce:

reduce(lambda x,y: x+y, [i+'='+dic[i]+'&' for i in dic])[:-1]