python list转dict

原始数据为 abc=00001&abc2=00002&abc3=00003

现在要把上面的数据转成dict格式:{'abc': 00001, 'ab2': 00002, 'ab3': 00003}

我现在用的方法是先转成list再转成dict:

t = 'abc=00001&abc2=00002&abc3=00003'
d = {}
for i in t.split('&'):
    l = i.split('=')
    d[l[0]] = l[1]

我总觉得这个方法不简明,请问还有什么更好的方法吗?

阅读 5.8k
2 个回答

python3

>>> t = 'abc=00001&abc2=00002&abc3=00003'
>>> {k:v for k,v in (s.split('=')for s in t.split('&'))}
{'abc3': '00003', 'abc': '00001', 'abc2': '00002'}

将string按 '&' 号分开可以得到形式为"abc(n)=0000(n)"的数组,接下来对数组成员进行map,map的函数目的是将成员按 '=' 区分开,这一步将会获得[[key,value],[key,value],[key,value]],然后外面套个dict就行了。
函数式编程可读性好一点,缺点是你不容易知道哪儿缺了个括号。

t = 'abc=00001&abc2=00002&abc3=00003'
d = dict(map(lambda s: s.split('='), t.split('&')))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题