13

Pythonでは、リストのリストを操作する場合と辞書を操作する場合の利点/欠点はありますか?具体的には、それらを使用して数値演算を行う場合? 線形代数クラスの単純な行列演算を解く関数のクラスを作成しています。私は辞書を使用していましたが、numpy代わりにリストのリストを使用していることがわかったので、いくつかの利点があるに違いないと思います。

例:[[1,2,3],[4,5,6],[7,8,9]]とは対照的に{0:[1,2,3],1:[4,5,6],2:[7,8,9]}

4

2 に答える 2

11

これは、この構造をどのように使用する予定であるかに大きく依存すると思います。

Python の辞書は、(ほとんどの場合と同様) デフォルトでは順不同です。このようにデータを反復処理する予定がある場合は、辞書を使用しないでください。

for list in dict.keys():
    for elem in list:
        # Logic

同様に、インデックス以外の値がほとんどない場合、キー 1、2、3 で辞書を使用してもあまり意味がありません。また、辞書は、ハッシュ プロセスのために、メモリ内でより多くのスペースを占有します。

要素ごとに項目にアクセスすることを計画している場合 (それが必要なように思えます)、それでも List を使用する必要があります。Dictionary と同じ、O(1) のリストでのインデックス検索。唯一の違いは、インデックスではなくキー値を検索する場合です (辞書よりも高速です)。

関連する値を取得するために意味のあるキーを検索する必要がある、ある種のキーと値の関係マッピングがある場合にのみ、ディクショナリの使用を実際に検討する必要があります。これは、それらのケースの 1 つとは思えません。リストのリストに固執します。


辞書が悪いデータ構造だと言っているわけではありません。Ruby と Python は私にそれらを紹介してくれました。これらは、前述のマッピングの問題 (私がよく遭遇する問題) のいずれにも非常に役立ちます。それらは特定のクラスの問題に役立つだけで、これはその 1 つではありません。

于 2013-04-13T17:17:07.737 に答える