Pythonでセット内の要素を検索したい。検索されている要素のインデックスを最速で取得するにはどうすればよいですか?
element in set
インデックスを与えません!要素のインデックスを知りたいです。
Pythonでセット内の要素を検索したい。検索されている要素のインデックスを最速で取得するにはどうすればよいですか?
element in set
インデックスを与えません!要素のインデックスを知りたいです。
インデックスに興味がある場合はlists
orを使用してください。順序は維持されません。tuples
sets
ドキュメントから:
セットは順序付けされていないコレクションであるため、要素の位置や挿入順序を記録しません。したがって、セットはインデックス作成、スライス、またはその他のシーケンスのような動作をサポートしません。
または、次のようなものかもしれません。
In [1]: se=set("foobarspampython")
In [2]: se
Out[2]: set(['a', 'b', 'f', 'h', 'm', 'n', 'o', 'p', 'r', 's', 't', 'y'])
In [3]: list(se).index("f") # in the original string the index is 0,
# but list(set) returns something different
Out[3]: 2
Python 3.x:
Python 3.xで使用OrderedDict()
でき、アイテムをdictのキーとして使用できます。
に似た python 3.x にdict.keys()
戻り、すべての設定操作を実行できます。keysView
sets
>>> from collections import OrderedDict as od
>>> strs="foobarspampython"
>>> dic=od((x,"") for x in strs)
>>> dic.keys() #order is maintained
KeysView(OrderedDict([('f', ''), ('o', ''), ('b', ''), ('a', ''), ('r', ''),
('s', ''), ('p', ''), ('m', ''), ('y', ''), ('t', ''),
('h', ''), ('n', '')]))
>>> list(dic.keys()).index("f")
0
>>> list(dic.keys()).index("b")
2
>>> dic.keys() & {'a','b','c'} # even set operations work fine on it
{'a', 'b'}
インデックスへのアクセス機能と高速ルックアップの両方が必要な場合は、(非標準の)blistパッケージを確認する必要があります。順序を維持し、高速アクセスを可能にする高速リストの実装を提供します。できる限り速くはなりませんがset
、インデックスを取得することはできます。