我有一个有序字典列表,其外观如下所示
[OrderedDict([('a', 1), ('b', 2)]), OrderedDict([('a', 1), ('b', 3)]), OrderedDict([('a', 2), ('b', 2)]), OrderedDict([('a', 3), ('b', 2)]), OrderedDict([('a', 1), ('b', 3)])]
我想将列表的索引存储在数组中,a
值为1
所以,我的列表将包含以下元素
[0,1,4]
我有一个传统的脚本来获取这些值,但由于我的原始列表中包含超过一百万个有序词,因此需要更长的时间来获取元素。
for ele in range(len(liso)):
if(liso[ele]['a'] ==1):
giso.add(ele)
有人可以帮助我使用map
或filter
重写上述脚本来优化查询吗?
答案 0 :(得分:2)
列表理解:[i for i, x in enumerate(liso) if x['a'] == 1]
过滤:
如果您使用的是Python 2:filter(lambda i: liso[i]['a'] == 1, xrange(len(liso)))
如果您使用的是Python 3:list(filter(lambda i: liso[i]['a'] == 1, range(len(liso))))