通过某个键收集列表中dict项的值?

2024-03-29 06:28:18 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们有一个dict列表:

[
  {
    'k1': 'v11',
    'k2': 'v21',
    'k3': 'v31'
  },
  {
    'k1': 'v12',
    'k2': 'v22',
    'k3': 'v32'
  },
  {
    'k1': 'v13',
    'k2': 'v23',
    'k3': 'v33'
  }
]

我想得到键为k1:[v11, v12, v13]的所有值,但是使用无循环。在

我尝试使用map函数和functools.partial

^{pr2}$

但这是错误的,因为我只能使用functools.partial绑定第一个参数。在

那么有没有什么Python式的方法来做到这一点呢?在


Tags: 列表k2k1partialdictfunctoolsv11k3
3条回答

如果要使用map执行此操作,请使用operator.itemgetter('k1')

map(operator.itemgetter('k1'), the_list)

不过,我个人会用列表理解法来代替:

^{pr2}$

您也可以使用lambda

map(lambda x:x.get('k1'), the_list)

您可以将^{}map一起使用:

>> from operator import itemgetter
>>> map(itemgetter('k1'), data)
['v11', 'v12', 'v13']

但从性能上看,它与同等的列表理解版本相比没有优势:

^{pr2}$

相关问题 更多 >