Python:迭代包含列表的字典并将键和值存储在字符串中

时间:2014-09-25 14:15:34

标签: python list dictionary iterator

params={
    'key1': 'value1',
    'key2': ['value_a','value_b']
}

这是我开始使用的内容,但它无法处理该列表。

str_params = ''
for key, value in params.items():
    print (key,value)
    str_params += '&' + key + '=' + value

我试图产生这个字符串。

str_params = '&key1=value1&key2=value_a&key2=value_b'     

2 个答案:

答案 0 :(得分:2)

迭代字典只会生成密钥。如果您希望产生键值对,请使用items()方法(Python 2.x中的iteritems)。

使用urllib.parse.urlencode(Python {x中的urllib.urlencode):

>>> import urllib.parse
>>> urllib.parse.urlencode([
...     (key, x) for key, xs in params.items()
...     for x in ([xs] if isinstance(xs, str) else xs)
... ])
'key2=value_a&key2=value_b&key1=value1'

您可以使用手动字符串操作符,但需要额外注意应该%xx编码的特殊字符。

答案 1 :(得分:1)

您需要使用items()来访问字典中的键和值:

>>> for i,j in params.items():
...  str_params+= '&' +i+'='+str(j)