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

Jam*_*rtz 21 python dictionary list

我有一个字典列表,列表中的所有字典都具有相同的结构.例如:

test_data = [{'id':1, 'value':'one'}, {'id':2, 'value':'two'}, {'id':3, 'value':'three'}]
Run Code Online (Sandbox Code Playgroud)

我想value从列表中的每个字典中获取每个项目:

['one', 'two', 'three']
Run Code Online (Sandbox Code Playgroud)

我当然可以遍历列表并使用for循环提取每个值:

results = []
for item in test_data:
    results.append(item['value'])
Run Code Online (Sandbox Code Playgroud)

但是我的数据集非常大.我想知道是否有更快的方法.

Ant*_*ala 21

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

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

...

for i in generator:
    do_something(i)
Run Code Online (Sandbox Code Playgroud)

另一个(深奥)的选择可能是使用mapitemgetter-它可能是比发电机表达稍快,或不根据情况:

from operator import itemgetter

generator = map(itemgetter('value'), test_data)
Run Code Online (Sandbox Code Playgroud)

如果你绝对需要一个列表,列表理解比迭代更快list.append,因此:

results = [ item['value'] for item in test_data ]
Run Code Online (Sandbox Code Playgroud)


lev*_*evi 8

你可以这样做:

result = map (lambda x:x['value'],test_data)
Run Code Online (Sandbox Code Playgroud)