python - 在有序字典

时间:2017-04-19 17:06:50

标签: python dictionary

我有一个有序字典列表,其外观如下所示

[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)

有人可以帮助我使用mapfilter重写上述脚本来优化查询吗?

1 个答案:

答案 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))))