如何使用索引列表索引多个列表的字典?

时间:2013-04-18 18:00:23

标签: python list dictionary python-2.7 indexing

我在使用Python 2.7.3。 如果我有一个列表字典,如下所示:

>>> x1 = [1,2,3,4,5,6,7,8,5]
>>> x2 = range(11,20)
>>> mydict = {'first':x1,'second':x2}

......并且列表大小相同......

>>> len(mydict['second']) == len(mydict['first'])
True

如何使用这样的索引列表:

>>> ind = [0,1,2,3,4,5,6,7]

要从我的字典中的两个列表中获取值?我曾尝试使用“ind”列表进行索引,但是不管ind是列表还是像这样的元组都会不断出错:

>>> mydict['second'][ind]
TypeError: list indices must be integers, not set

我意识到列表不是整数,但集合中的每个值都是整数。有没有办法到达x1 [ind]和x2 [ind]而不在循环中迭代计数器?

不知道是否重要,但我已经找到了这样的独特值所得到的索引列表:

>>> import numpy as np
>>> ux1 = np.unique(x1, return_index = True)

2 个答案:

答案 0 :(得分:1)

您想使用operator.itemgetter

getter = itemgetter(*ind)
getter(mydict['second']) # returns a tuple of the elements you're searching for.

答案 1 :(得分:1)

您可以使用operator.itemgetter

from operator import itemgetter
indexgetter = itemgetter(*ind)
indexed1 = indexgetter(mydict['first'])
indexed2 = indexgetter(mydict['second'])

请注意,在我的示例中,indexed1indexed2将是tuple个实例,而不是list 实例。另一种方法是使用列表理解:

second = mydict['second']
indexed2 = [second[i] for i in ind]