如何将“x = y”字符串的元组解析为python中的字典?
我有一个字符串的元组,我想通过使用分隔符分割每个元素来将其转换为字典。这可能与字典理解?如何将“x = y”字符串的元组解析为python中的字典?
>>> x = ('var1=abc', 'var2=xyz', 'var3=10')
>>> y = {k: v for (k, v) in ???} # this is where I need your help
>>> print y
{ "var1": "abc", "var2": "xyz", "var3": "10" }
这既是一个学习的过程是什么 - 所以请不要做它的另一种方式回答(我有很多这样的) - 我想知道这是否是可能的字典解析。
[UPDATE]
有,我没有写下第一稍微修改 - 我需要从每个值的端部条的外来换行字符。
>>> x = ('var1=abc\n', 'var2=xyz\n', 'var3=10')
>>> d = {k: v.strip('\n') for (k, v) in [e.split('=') for e in x]}
>>> d
{'var1': 'abc', 'var3': '10', 'var2': 'xyz'}
(当然,现在不是以相同的顺序 - 但是我可以忍受哎呀。)
你不得不两次拆分每个字符串,但肯定的,这是可以做到:
{elem.split('=', 1)[0]: elem.split('=', 1)[1].strip() for elem in x}
结果:
>>> x = ('var1=abc\n', 'var2=xyz\n', 'var3=10')
>>> {elem.split('=', 1)[0]: elem.split('=', 1)[1].strip() for elem in x}
{'var1': 'abc', 'var3': '10', 'var2': 'xyz'}
为了避免分裂两次,用生成的表达和dict()
CON结构代替:
dict(elem.strip().split('=', 1) for elem in x)
因为它需要一个二值元组序列。
你可以使用一个字典+列表理解'{i [0]:i [1]在[p.split('=',1)for p in x]}(我确定有一个更好的方式来写也:) – 2013-03-04 16:44:51
@JonathanVanasco:但这是一个双循环。我非常确定,调用两次拆分将会在任何一天打败嵌套双循环。 :-) – 2013-03-04 16:46:38
并使用简单的'dict()'敲打。:) – 2013-03-04 16:47:01
>>> x = ('var1=abc', 'var2=xyz', 'var3=10')
>>> dict([element.split('=') for element in x])
{'var1': 'abc', 'var3': '10', 'var2': 'xyz'}
使用dict()
构造
dict(elem.split('=', 1) for elem in x)
在行动:
>>> x = ('var1=abc', 'var2=xyz', 'var3=10')
>>> dict(elem.split('=', 1) for elem in x)
{'var1': 'abc', 'var3': '10', 'var2': 'xyz'}
注:字典是无序的,所以你不会得到你想要的确切结果。
首先 - 这是我见过的最快的一个问题 - 我实际上在大约2分钟内完成了自己的工作,到那时我有三个答案。令人惊叹的东西 - 做得很好,但Martijn获得第一名。 – 2013-03-04 16:46:49
以此速度,Martijn将*总是*得分。 :) – 2013-03-04 16:47:55
我已经upvoted所有正确的答案,以及:-) – 2013-03-04 16:49:26