如何使用lambda函数将逗号分隔的键值对转换为字典

3 投票
3 回答
11363 浏览
提问于 2025-04-16 00:36

我在理解 lambda 函数时遇到了一点小问题。有人能教我怎么用 lambda 函数把下面这个字符串分割成一个字典吗?

fname:John,lname:doe,mname:dunno,city:Florida

谢谢

3 个回答

0

如果你真的想的话,甚至可以用两个小函数(叫做“lambda”)来实现这个,但千万不要在工作中尝试!这只是为了好玩:

s = "name:John,lname:doe,mname:dunno,city:Florida"
d = reduce(lambda d, kv: d.__setitem__(kv[0], kv[1]) or d, 
    map(lambda s: s.split(':'), s.split(',')),
    {})                                                 
2

你不需要用lambda函数来完成这个:

>>> s = "fname:John,lname:doe,mname:dunno,city:Florida"
>>> dict(item.split(":") for item in s.split(","))
{'lname': 'doe', 'mname': 'dunno', 'fname': 'John', 'city': 'Florida'}

不过如果你真的想用的话,也是可以的:

>>> dict(map(lambda x: x.split(":"), s.split(",")))
{'lname': 'doe', 'mname': 'dunno', 'fname': 'John', 'city': 'Florida'}
18

这里其实并不需要用到lambda。

s = "fname:John,lname:doe,mname:dunno,city:Florida"
sd = dict(u.split(":") for u in s.split(","))

撰写回答