将列表元素拆分为键/ val字典

时间:2016-12-10 16:36:15

标签: python list python-3.x dictionary split

我有这个:

query='id=10&q=7&fly=none'

我想拆分它来创建一个这样的字典:

d = { 'id':'10', 'q':'7', 'fly':'none'}

我怎么能用很少的代码来做呢?

3 个答案:

答案 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。希望这有帮助!