You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python的map中返回多值?单次map拆分字典列表键值

如何用一次map函数拆分字典列表的多组值?

当然可以做到!其实只需要结合map和zip的特性,就能用一次map调用完成你想要的拆分,而且代码还很简洁。

直接上解决方案:

adict = {'name': 'John Doe', 'age': 18}
bdict = {'name': 'Jane Doe', 'age': 20}
l = [adict, bdict]

name_vals, age_vals = map(list, zip(*map(lambda d: (d['name'], d['age']), l)))

运行后就能得到你想要的结果:

>>> name_vals
['John Doe', 'Jane Doe']
>>> age_vals
[18, 20]

拆解一下这个逻辑:

  • 首先,map(lambda d: (d['name'], d['age']), l) 会遍历列表l里的每个字典,把每个字典转换成包含name和age值的元组,得到一个迭代器,内容是 ('John Doe', 18), ('Jane Doe', 20)。
  • 然后zip(*...) 是关键操作,它会把这些元组“转置”——也就是把所有元组的第一个元素聚合为一组,第二个元素聚合为一组,得到两个迭代器,分别对应所有name值和所有age值。
  • 最后用map(list, ...)把这两个迭代器转换成列表,这样就能直接解包赋值给name_vals和age_vals了。

如果不需要列表格式,只需要可迭代对象的话,甚至可以省略外层的map(list, ...),直接用name_vals, age_vals = zip(*map(...)),得到的是元组形式的结果,同样能满足多数场景的需求。

内容的提问来源于stack exchange,提问作者John Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:16:34