たとえば、大規模なリストや辞書のコード形式のベストプラクティスについて Python ドキュメントを調べてきました。
something = {'foo' : 'bar', 'foo2' : 'bar2', 'foo3' : 'bar3'..... 200 chars wide, etc..}
または
something = {'foo' : 'bar',
'foo2' : 'bar2',
'foo3' : 'bar3',
...
}
または
something = {
'foo' : 'bar',
'foo2' : 'bar2',
'foo3' : 'bar3',
...
}
リスト/辞書の深い入れ子をどのように処理しますか?
私の好ましい方法は:
something = {'foo': 'bar',
'foo2': 'bar2',
'foo3': 'bar3',
...
'fooN': 'barN'}
aaronasterlingのインデントスタイルは、私が好むものです。これと他のいくつかのスタイルは another SO Question で説明されています。特にLennart Regebroの回答は素晴らしい概要を与えました。
しかし、このスタイルは最も投票されたものでした:
my_dictionary = {
1: 'something',
2: 'some other thing',
}
PEP8スタイルガイド によると、辞書をフォーマットする方法は2つあります。
mydict = {
'key': 'value',
'key': 'value',
...
}
OR
mydict = {
'key': 'value',
'key': 'value',
...
}
PEP8に準拠したい場合、他のことは技術的に間違っていると思います。
好きなように辞書を定義して、これを試してください:
from pprint import pprint
pprint(yourDict)
# for a short dictionary it returns:
{'foo': 'bar', 'foo2': 'bar2', 'foo3': 'bar3'}
# for a longer/nested:
{'a00': {'b00': 0,
'b01': 1,
'b02': 2,
'b03': 3,
'b04': 4,
'b05': 5,
'b06': 6,
'b07': 7,
'b08': 8,
'b09': 9},
'a01': 1,
'a02': 2,
'a03': 3,
'a04': 4,
'a05': 5,
'a06': 6,
'a07': 7,
'a08': 8,
'a09': 9,
'a10': 10}
出力は好きですか?
ganeti (PEP 8に準拠)の場合、3番目のオプションを選択する必要があります。
something = {
'foo1': 'bar1',
'foo2': 'bar2',
'foo3': 'bar3',
...
}
私はこのESPが好きです。必要な要素をのみ選択できるためです。そして、私はどちらかの端に要素を削除または追加する方がこの方法の方が速いと感じています。
注:コメントで指摘されているように、PEPに従って、「:」(E203)の前に空白があってはなりません。
間違いなくオプション1ではありません Python の強みの1つはその読みやすさです。オプション1は、その可読性を大幅に低下させます。
2と3のうち、pyfuncが両方について述べたのと同じ理由をエコーします。
ただし、私のコードでは、最初の要素が宣言行の終わりにあるために「失われる」ことがあり、コードをざっと見ただけではすぐに表示されない場合があるという理由だけで、オプション3を好みます。少しばかげているのはわかっていますが、心は神秘的な方法で働いています...
私は2番目または3番目のほうを好みます。
理由:
さて、あなたの行は79文字幅でなければならないので、最初のものはノーゴーです。他の2つのオプションについては、好みの問題だと思いますが、個人的には2番目のオプションを好みます。
PEP8では特に言及されていないが、 辞書のドキュメント に記載されている次のオプションについて説明します。「キーが単純な文字列の場合、キーワード引数を使用してペアを指定する方が簡単な場合があります。 : "
my_dict = dict(
foo = 1,
bar = 2,
baz = 3,
...
)
ただし、インデントの問題は解決されません。
私は2番目の方法が大好きです:
something = {'foo' : 'bar',
'foo2' : 'bar2',
'foo3' : 'bar3',
...
'fooN': 'barN'}
この投稿を読む前に、私はあなたが与える3番目のオプションを選択したでしょう。しかし今、私はTörökGáborのスタイルではないものに行くかもしれません:
my_dictionary = {1: '何か'、2: '何か他のもの'、}
しかし、正直なところ、最初のオプション以外は何でも問題ないでしょう。