簡體   English   中英

如何從字典列表中提取特定鍵的所有值?

[英]How do I extract all the values of a specific key from a list of dictionaries?

我有一個字典列表,列表中的所有字典都具有相同的結構。 例如:

test_data = [{'id':1, 'value':'one'}, {'id':2, 'value':'two'}, {'id':3, 'value':'three'}]

我想從列表中的每個字典中獲取每個value項:

['one', 'two', 'three']

我當然可以遍歷列表並使用for循環提取每個值:

results = []
for item in test_data:
    results.append(item['value'])

但是我的數據集非常大。 我想知道是否有更快的方法。

如果您只需要迭代一次值,請使用生成器表達式:

generator = ( item['value'] for item in test_data )

...

for i in generator:
    do_something(i)

另一個(深奧的)選項可能是使用帶有itemgetter map - 它可能比生成器表達式略快,具體取決於具體情況:

from operator import itemgetter

generator = map(itemgetter('value'), test_data)

如果你絕對需要一個列表,列表理解比迭代list.append更快,因此:

results = [ item['value'] for item in test_data ]

你可以這樣做:

result = map (lambda x:x['value'],test_data)

如果您的數據真的很大,那么生成器將更有效:

list((object['value'] for object in test_data))

例如:

>>> list((object['value'] for object in test_data))
['one', 'two', 'three']

發電機部分是這樣的:

(object['value'] for object in test_data)

通過將其包裝在list() ,您可以耗盡生成器並在數組中很好地返回其值。

暫無
暫無

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

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