コードで辞書リテラルを記述するときに主に使用される規則は何だと思いますか?
答えとして、考えられる規則を1つ書きます。
my_dictionary = {
1: 'something',
2: 'some other thing',
}
基準はほぼないと言っていいでしょう。
インデントの 2 つの方法を見てきました。
Indent 1:
my_dictionary = {
'uno': 'something',
'number two': 'some other thing',
}
Indent 2:
my_dictionary = {'uno': 'something',
'number two': 'some other thing',
}
エンドブラケットを配置するために3つ配置されているのを見ました:
End 1:
my_dictionary = {'uno': 'something',
'number two': 'some other thing',
}
End 2:
my_dictionary = {'uno': 'something',
'number two': 'some other thing',
}
End 3:
my_dictionary = {'uno': 'something',
'number two': 'some other thing',}
また、値を正当化する場合もあります。
my_dictionary = {'uno': 'something',
'number two': 'some other thing',
}
そして時にはコロンさえ:
my_dictionary = {'uno' : 'something',
'number two' : 'some other thing',
}
これは奇妙に見えます。
また、終了コンマがある場合とない場合があります。
my_dictionary = {'uno': 'something',
'number two': 'some other thing'}
また、すべてを 1 つの行に貼り付けることもあります (収まる場合)。
my_dictionary = {'uno': 'something', 2: 'some other thing'}
誰もがこれらのスタイルの独自の組み合わせを持っているようです. 個人的には、そうしない理由がない限り、あなたの例で使用するスタイルに傾向があります。そうしない一般的な理由は、ステートメントの一部として辞書がある場合です。そのようです:
amethodthattakesadict({'hey': 'this',
'looks': 'a',
'bit': 'shitty',
})
あなたが編集しているコードを書いた人のスタイルに自分自身を適応させることをお勧めします。それがあなたのコードの場合: 好きなようにしてください。:-)
エンドブレースについて:私はこのようにそれを好む:
my_dictionary = {
'a': 'first value',
'b': 'second',
}
Pythonコードのインデントには近いトークンがないため、コードは次のようにインデントされます。最初の行(if、while、defなど)は句の残りの部分からインデントされ、他のすべての行はインデントされます。同額。句の最後の行は、他のすべてと一緒にインデントされます。最初の行と同じようにインデントされた次の行は、次の句の最初の行であり、この句の最後の行ではありません。
したがって、データ構造には明示的な終了トークンがあり、柔軟性が高くなる可能性がありますが、コード句と同様の規則を使用してデータ構造をインデントするのが好きです。
インデント スタイル 1、エンディング スタイル 3 (レナートの回答後):
my_dictionary = {1: 'thing_one',
2: 'thing_two',
...
n: 'thing_n'}
これは、Python の空白の書式設定に非常に似ているため、Python コードの括弧で囲まれたエンティティの最もシームレスなインデント スタイルである可能性があります。Python コードで C スタイルのインデントに落とし込むことは、私にはいつも少し気まずいように思えました。C のような言語に慣れているプログラマーは (どこにでもあるため)、さまざまなインデント スタイルにさらされていない可能性があるため、これが主に使用されているのではないかと思います。
欠点は、最初または最後の挿入が他のスタイルよりも少し難しいことです. Python コードの記述をサポートする適切なエディターを考えると、それほど大きな違いはないはずです。
状況に応じてこのインデント スタイルを試し、C スタイルのインデントと並べて比較し、どちらがより Pythonic で一貫性があるかを判断してください。
おそらく、これはLisp スタイルのインデントと呼ばれる可能性があります。これは、何世紀にもわたって Lisp コードがインデントされてきた方法だからですが、たとえば、Smalltalk コードでもよく使用されます。(Lisp のような言語での) 括弧の配置に関する議論でよく読むことの 1 つは、「なぜ追加の行を与えるのか? それらはそれほど重要なのか?」です。
結局のところ、それは主に味の問題です。
辞書が大きすぎて 1 行に収まらない場合は、次のようにします。
d = \
{
'a' : 'b',
'c' : 'd'
}