如何使用lambda函数将逗号分隔的键值对转换为字典
我在理解 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(","))