我有这个:
query='id=10&q=7&fly=none'
我想拆分它来创建一个这样的字典:
d = { 'id':'10', 'q':'7', 'fly':'none'}
我怎么能用很少的代码来做呢?
答案 0 :(得分:3)
通过分割两次,一次在'&'
,然后在'='
,对于第一次分割产生的每个元素:
query='id=10&q=7&fly=none'
d = dict(i.split('=') for i in query.split('&'))
现在,d
看起来像是:
{'fly': 'none', 'id': '10', 'q': '7'}
答案 1 :(得分:3)
在您的情况下,更方便的方法是使用urllib.parse
模块:
import urllib.parse as urlparse
query = 'id=10&q=7&fly=none'
d = {k:v[0] for k,v in urlparse.parse_qs(query).items()}
print(d)
输出:
{'id': '10', 'q': '7', 'fly': 'none'}
注意,如果查询字符串中有多个具有相同值的键,则urlparse.parse_qs()
函数会更有用。这是一个例子:
query = 'id=10&q=7&fly=none&q=some_identifier&fly=flying_away'
d = urlparse.parse_qs(query)
print(d)
输出:
{'q': ['7', 'some_identifier'], 'id': ['10'], 'fly': ['none', 'flying_away']}
https://docs.python.org/3/library/urllib.parse.html#urllib.parse.parse_qs
答案 2 :(得分:0)
这就是我提出的:
dict_query = {}
query='id=10&q=7&fly=none'
query_list = query.split("&")
for i in query_list:
query_item = i.split("=")
dict_query.update({query_item[0]: query_item[1]})
print(dict_query)
dict_query
会返回您想要的内容。此代码的工作原理是将查询拆分为不同的部分,然后对于每个新部分,它将其分割为=
。然后它会使用每个新值更新dict_query
。希望这有帮助!