我有一个字典列表,它们在列表中都具有相同的结构。例如:
test_data = [{'id':1, 'value':'one'}, {'id':2, 'value':'two'}, {'id':3, 'value':'three'}]
我想value从列表中的每个字典中获取每个项目:
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)
另一个(深奥的)选项可能map与itemgetter-一起使用-它可能会比生成器表达式快一点,或者不快一点,具体取决于情况:
map
itemgetter
from operator import itemgetter generator = map(itemgetter('value'), test_data)
而且,如果您绝对需要一个列表,则列表理解要比iterated快list.append,因此:
list.append
results = [ item['value'] for item in test_data ]