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

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

私の例では、インスタンスではなくインスタンスにindexed1なるindexed2ことに注意してください 。別の方法は、リスト内包表記を使用することです。tuplelist

second = mydict['second']
indexed2 = [second[i] for i in ind]
于 2013-04-18T18:03:09.113 に答える
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 に答える