2012-06-14 4 views
6

これはあなたがどのような大会を提案するのかということはほんのわずかな質問です。最近、私は人々の多くの例を見てきましたdict(key1=val1, key2=val2)私はより熟語{"key1": val1, "key2": val2}だと思うものの代わりに。私はその理由がキーのために""を使用することを避けることだと思うが、私は確信していない。おそらくdict() -syntaxは他の言語に近いでしょうか?確か文字列キーで辞書を構築するときに、Pythonでdictや{}を書くべきでしょうか?

+1

これは明らかに1つ以上の方法があります。 – wim

+1

'{}'バージョンの明白な利点は、後で文字列以外のキーを使用する場合、行全体。 – James

+0

安全な側にいるためには、常に「ベルトとブレース」のような2つの方法を組み合わせることができます: '' kwargs = {"key1": "val1"、 "key2": "val2"}; d = dict(** kwargs) ''。 – Blair

答えて

5

私はここに流れに逆らって行くつもりです:それはあなたに合っている場合dict()メソッドを使用します

が、概説制限を保ちます他の答えに留意してください。いくつかの利点は、この方法にあります。

  • それは{}が入力しにくいですキーボードレイアウトのキーと値のペア
  • あたり以下の3文字だ
  • いくつかの状況ですっきり見えます(AltGr- 7とAltGr-0はここに入力すると速くなります)
+0

ここには正解がないのは明らかですが、私はあなたのことが一番好きです。私は、SOが、評判が最も高いユーザーからのコメントを自動的に投票する不運な傾向があると思います。 – Gurgeh

2

、{}を使用し、以下のコード単純&タイプを保つには、私の目標

+4

さて、ここでは両方を持つことはできません。 2つ以上のキーの場合、 'dict()'メソッドは、PEP8の推奨に従うならば、2つの引用符と1つのスペース文字をキーと値のペアより少なくすることを意味します。 –

8

{"key1": val1, "key2": val2}、より慣用的である常に。私はほとんどキーワード引数を持つdictに遭遇することはほとんどなく、私は確かにそれを書こうと誘惑されたことはありません。キーワード引数はPythonの識別子でなければならないので、それは、また、より一般的です:

>>> {"foo bar": 1} 
{'foo bar': 1} 
>>> dict(foo bar=1) 
------------------------------------------------------------ 
    File "<ipython console>", line 1 
    dict(foo bar=1) 
       ^
SyntaxError: invalid syntax 

>>> dict("foo bar"=1) 
------------------------------------------------------------ 
    File "<ipython console>", line 1 
SyntaxError: keyword can't be an expression (<ipython console>, line 1) 
+1

Pythonが他の言語で句読点を使用する単語を使用する場合があります。ラインノイズが少なくなります。 'dict()'を使うと読みやすくなります(キーが有効なPython識別子でない場合は使用できません;その場合は何を使うべきか疑問はありません)。 – jfs

1

中括弧{}には多少の曖昧さがあります。考えてみましょう:

>>> x = {'one','two','three'} 
>>> type(x) 
<type 'set'> 
>>> x = {} 
>>> type(x) 
<type 'dict'> 

set()またはdict()を使用してとの曖昧性がないのに対し。

+0

良い点ですが、これは他の点があると考えると非常にマイナーです。 – jamylak

関連する問題