[英]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.