如何将 "x=y" 字符串元组解析为 Python 字典?

3 投票
3 回答
960 浏览
提问于 2025-04-17 17:53

我有一个字符串的元组,我想通过用分隔符拆分每个元素,把它转换成一个字典。请问用字典推导式可以做到吗?

>>> 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)

因为它需要一系列包含两个值的元组。

撰写回答