0

我在 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)
4

2 回答 2

1

你想使用operator.itemgetter

getter = itemgetter(*ind)
getter(mydict['second']) # returns a tuple of the elements you're searching for.
于 2013-04-18T18:02:54.447 回答
1

You can use operator.itemgetter:

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

note that in my example, indexed1 and indexed2 will be tuple instances, not list instances. The alternative is to use a list comprehension:

second = mydict['second']
indexed2 = [second[i] for i in ind]
于 2013-04-18T18:03:09.113 回答