辞書は、やり方はです。
In [332]: airports = [['BCN','Barcenlona'],['DUB','Dublin']]
In [333]: dict(airports)
Out[333]: {'BCN': 'Barcenlona', 'DUB': 'Dublin'}
In [334]: mapping = dict(airports)
In [335]: mapping.get('DUB')
Out[335]: 'Dublin'
辞書に配列を変換し、そして(KeyError
Sをスローしません)[]
、またはdict.get
と辞書のインデックスのいずれかを使用します。
辞書の利点は、それがイディオム的にデータに適していることと、繰り返し検索がデータのユースケースである場合に理想的な値の時間ルックアップO(1)
を容易にすることです。
あなたは2次元配列を使用する必要がある場合は、あなたがしようとnext
を使用して可能な限り、これはのように効率的に行うことができます -
- 発電理解
next((y for x, y in airports if x == code), 'Not Found')
next
は2つの引数を受け入れることができます(任意のイテレータ)
- イテレータが何も返さない場合に返されるデフォルトの引数
ここでは、迅速なサンプルです:あなたはO(N)
複雑さを免れることはできないことに注意してください
In [338]: next(y for x, y in airports if x == 'XXX')
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
:デフォルト引数がない
In [336]: next((y for x, y in airports if x == 'DUB'), 'Not Found')
Out[336]: 'Dublin'
In [337]: next((y for x, y in airports if x == 'XXX'), 'Not Found')
Out[337]: 'Not Found'
、next
は無効なキーとStopIteration
をスローします辞書なしの落とし穴。
A辞書ですが、このシナリオでは、より適切なものとわかりました、ああ@thatrockbottomprogrammer – thatrockbottomprogrammer
ずっと速いだろう - 私はこの作業の目的のために残念なことにリスト形式で2D配列を使用する必要があります。 – LearningToPython