辞書、リスト、セットはいつ使用すればよいですか?
各データ タイプに適したシナリオはありますか?
ベストアンサー1
A はlist
順序を保ちます。dict
したがってset
、順序を気にする場合は、 を使用する必要がありますlist
(もちろん、コンテナーの選択肢がこれら 3 つに限定されている場合は ;-) )。
dict
は各キーを値に関連付けますが、 とlist
にset
は値のみが含まれます。明らかに、使用例が大きく異なります。
set
ではアイテムがハッシュ可能であることが必要ですが、list
ではそうではありません。したがって、ハッシュ不可能なアイテムがある場合は、 を使用できずset
、代わりに を使用する必要がありますlist
。
set
は重複を禁止しますが、list
は禁止しません。これも重要な違いです。(重複を複数回存在する項目の異なるカウントにマップする「マルチセット」は にあります。何らかの奇妙な理由で をインポートできなかった場合は として、または 2.7 より前の Python では としてcollections.Counter
構築できます。その場合、項目をキーとして使用し、関連付けられた値をカウントとして使用します)。dict
collections
collections.defaultdict(int)
set
(またはキーの場合は)値のメンバーシップのチェックは、dict
非常に高速(一定の短時間)ですが、リストの場合は、平均および最悪の場合、リストの長さに比例した時間がかかります。したがって、ハッシュ可能な項目があり、順序や重複を気にせず、メンバーシップのチェックを高速化したい場合は、set
よりも の方が適していますlist
。