dict 型のリテラル表現

dict 型は(文字どおりの)リテラル表現が可能です。つまり、ありのままの構造を表現するだけで、そのインスタンスが得られます。IronPythonソースコードを理解するための布石として、実際に、その動作を確認してみましょう。

>>> {}
{}

括弧 {} を評価すると、dict 型のインスタンス(空辞書)が得られます。そのリテラル表現を見ると、要素を1つも含まないことが分かります。これは、空文字列 "" を評価するときに、文字を1つも含まないのと同様です。

>>> {"A":1}
{'A': 1}

括弧 {} の中には、コロン「:」で区切られた、要素対(キー:値)を記述できます。ここでは、キー要素となる文字列 'A' に、値要素となる整数 1 が対応します。キー/値には、文字列や整数だけでなく、任意のオブジェクトを指定できます。

>>> {"A":1,"B":2}
{'A': 1, 'B': 2}

括弧 {} の中には、カンマ「,」で区切られた、複数の要素対を記述できます。ここでは、要素対 'A': 1 に続けて、要素対 'B': 2 を列挙します。

>>> {"B":2,"A":1}
{'A': 1, 'B': 2}

要素対を記述する順序には、意味がありません(順不同)。入出力を比較すると、要素対の順序が異なるのが分かります。しかし、どちらも同じものです。

>>> {"A":1,"B":2,"C":3}
{'A': 1, 'C': 3, 'B': 2}

3つの要素対を列挙した、dict 型のインスタンスが得られます。入力した順序とは無関係に、出力される順序が決まるのが分かります。

>>> {"A":1,"A":1}
{'A': 1}

重複する要素対を列挙しても、無視されます。2つの要素対は同じなので、1つの要素対だけを持つインスタンスが得られます。

>>> {"A":1,"A":2}
{'A': 2}

キー要素が同じでも、値要素が異なる要素対を列挙すると、後の方を優先(上書き)します。キー要素 'A' が同じなので、後の方の要素対 'A': 2 だけを持つインスタンスが得られます。

>>> {None:0,"":None}
{None: 0, '': None}

必要なら、None を含む要素対を指定できます。