2011-08-09 2 views
0

人物、通り、アイルランドのダンス劇団などのようなオブジェクトのコレクションがあり、それは名前識別子の何らかの並べ替えを持っています。それはマップに保存することが大丈夫だと思われますか、それは悪い習慣とみなされ、毎回リストとしてクエリを実行しますか?オブジェクトの「名前」をマップに含めることは悪いですか?

Ex。

class Person: 
    def __init__(self,name,age): 
     self.name=name 
     self.age=age 
a = [Person("karl",50),Person("abe",20)] 
vs 
b = {"karl" : Person("karl",50), "abe" : Person("abe",20)} 

編集: 、一意性を前提とスピードの懸念が懸念されるかもしれないが、一般的な透明性が目標です。

+3

それは依存します。ユニークであることが保証されていますか?あなたは人を名前で頻繁に見ますか? – cdhowie

+1

マップは抽象的な概念です。名前で検索する場合や、他の種類のキーを使用する場合は、マップ(またはキーが一意でない場合はマルチマップ)があります。あなたは単純ではあるが非常に非効率なリストを使ってマップコンセプトを実装することができます。または、言語/ライブラリに付属の効率的な既成のマップ実装を使用することができます(そうしないと非常に良い理由がない限り、これは通常行うべきことです)。 –

+0

なぜ地図ではなくリストを使うのですか?どのように地球上のリストを検索すると、明快さが増しますか? – Marcin

答えて

0

私はそれはあなたがそのようなどほか

日本語、ロシア語、などローマ字だけでなく、別の文字セットで記述することができ名称、など複数のエンコーディングを扱う場合は特に、かなり危険なことだと思います@ cdhowieが述べたように、一意性という概念は非常に重要です。エイリアスが使用されている場合、どちらが正規ですか?

最後に、タイプミスの修正などの変更をどのように処理しますか?

私は多くの上昇が見られず、将来の使用のために多くのリスクがあります。

0

マップはあなたに一定の検索時間(良い)を与えますが、データを複製しています(悪い)。パフォーマンス上の理由から、一定の検索時間が本当に必要な場合は、マップを使用しますが、キーをオブジェクトの値と同期させておくように注意してください。パフォーマンスが重要でない場合は、アレイに保管してください。

関連する問題