繁体   English   中英

如何进行列表理解首先获取列表,然后使用python中的字典

[英]How to do a list comprehension taking first a list then a dict in python

我有以下字符串要解析为k,v的字典

foo =“ abc = foo.bazz; defg = 6cab; rando = random; token = foobar”

我可以用一些非常丑陋的代码来实现

foo_dict = {}
bar = foo.split(';') 
for item in bar:
  x = item.split('=')
foo_dict[x[0]] = x[1]

我更希望这是一个简单的1行列表理解。

dict(part.split("=") for part in foo.split(";"))

我认为会工作

>>> foo = "abc=foo.bazz; defg=6cab; rando=random; token=foobar"
>>> dict(part.split("=") for part in foo.split(";"))
{' token': 'foobar', 'abc': 'foo.bazz', ' defg': '6cab', ' rando': 'random'}
>>>

如果您执行part.strip().split("=")它可能会消除多余的空格...

>>> dict(part.strip().split("=") for part in foo.split(";"))
{'token': 'foobar', 'abc': 'foo.bazz', 'defg': '6cab', 'rando': 'random'}
In [107]: foo = "abc=foo.bazz; defg=6cab; rando=random; token=foobar"

In [115]:  dict(map(str.strip,x.split('=')) for x in foo.split(';'))
   .....: 
Out[115]: {'abc': 'foo.bazz', 'defg': '6cab', 'rando': 'random', 'token': 'foobar'}

如何使用urlparse模块:

In [1] import urlparse
In [2] foo = "abc=foo.bazz; defg=6cab; rando=random; token=foobar"
In [3]: urlparse.parse_qs('abc=foo.bazz; defg=6cab; rando=random; token=foobar')
Out[3]: 
     {' defg': ['6cab'],
      ' rando': ['random'],
      ' token': ['foobar'],
      'abc': ['foo.bazz']}

In [4]: dict(urlparse.parse_qsl('abc=foo.bazz; defg=6cab; rando=random; token=foobar'))
Out[4]: {' defg': '6cab', ' rando': 'random', ' token': 'foobar', 'abc': 'foo.bazz'}

不确定是否要在键中使用这些空白值,但显然很容易清理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM