如何将 "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" }
这其实也是一个学习练习,所以请不要用其他方法来回答我(我有很多其他的方法)——我想知道用字典推导式是否可行。
[更新]
我之前没有写清楚,有一个小修改——我需要把每个值末尾多余的换行符去掉。
>>> 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'}
(当然,现在顺序不一样了——不过我可以接受这个。唉。)
3 个回答
1
这段代码的意思是……
首先,它会做一些准备工作,比如设置一些变量或者导入需要的库。接着,它会执行一些操作,比如循环、条件判断等,来处理数据或者完成特定的任务。最后,它可能会输出结果,或者将处理后的数据保存到某个地方。
总的来说,这段代码的目的是为了实现某个功能,帮助我们更方便地完成工作。
>>> x = ('var1=abc', 'var2=xyz', 'var3=10')
>>> dict([element.split('=') for element in x])
{'var1': 'abc', 'var3': '10', 'var2': 'xyz'}
4
使用 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'}
注意:字典是无序的,所以你得到的结果可能和你想要的不完全一样。
5
你需要把每个字符串分割两次,不过是可以做到的:
{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()
构造函数来实现:
dict(elem.strip().split('=', 1) for elem in x)
因为它需要一系列包含两个值的元组。