簡體   English   中英

熱門通過某個鍵在列表中收集字典項的值?

[英]Hot to gather dict item's value in list by a certain key?

假設我們有一個字典列表:

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

我想獲取所有鍵為k1值: [v11, v12, v13] ,但不使用loop

我嘗試使用map功能和functools.partial

map(functools.partial(dict.get(), 'k1'), the_list)

但這是錯誤的,因為我只能使用functools.partial綁定第一個參數。

那么,有什么pythonic方法可以做到這一點嗎?

您可以將operator.itemgettermap一起使用:

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

但是在性能方面,與同等的列表理解版本相比,它沒有任何優勢:

>>> data = data *1000
>>> %timeit map(itemgetter('k1'), data)
10000 loops, best of 3: 170 µs per loop
>>> %timeit [x['k1'] for x in data]
10000 loops, best of 3: 166 µs per loop

如果要使用map進行此operator.itemgetter('k1') ,請使用operator.itemgetter('k1')

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

不過,我個人將使用列表推導:

[d['k1'] for d in the_list]

您也可以使用lambda

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM