今回は、Python辞書リストの使い方と、Python辞書リストを使用する際の注意点について、実際の事例を紹介しますので、見ていきましょう。
1. キーが存在するかどうかを確認するには、in キーワードを使用します。
Python の Zen には開発哲学があります。
それを行う明白な方法は 1 つだけである必要があります。
それを見つけてください。 1 つ、できれば唯一の明白な解決策です。 Python2 では、 has_key メソッドを使用して、キーが辞書に存在するかどうかを確認できます。もう 1 つの方法は、 in キーワードを使用することです。ただし、in の方が処理が速いため、後者の使用を強くお勧めします。もう 1 つの理由は、Python3 で has_key メソッドが削除されたためです。コードの py2 と py3 の両方のバージョンと互換性を持たせたい場合は、in を使用するのが最適です。選択。
bad d = {'name': 'python'} if d.has_key('name'): pass good if 'name' in d: pass
2. get を使用して辞書内の値を取得します
辞書内の値を取得する場合、簡単な方法は d[x] を使用して要素にアクセスすることですが、この状況はキーがアクセスされたときに発生します。もちろん、キーを取得する前に in 操作を使用してキーが辞書にあるかどうかを確認することはできますが、このメソッドは Python の Zen で述べられていることに従っていません。シンプルは複雑よりも優れています。
フラットはネストよりも優れています。
優れたコードはシンプルで理解しやすいものである必要があり、フラットなコード構造は読みやすくなります。 if...elsebad d = {'name': 'python'} if 'name' in d: print(d['hello']) else: print('default') good print(d.get("name", "default"))ログイン後にコピー
3 の代わりに get メソッドを使用できます。辞書に存在しないキーのデフォルト値を設定するには setdefault を使用します
data = [ ("animal", "bear"), ("animal", "duck"), ("plant", "cactus"), ("vehicle", "speed boat"), ("vehicle", "school bus") ]
groups = {} >>> {'plant': ['cactus'], 'animal': ['bear', 'duck'], 'vehicle': ['speed boat', 'school bus']}
オブジェクトを初期化してから、後続の操作を実行します。より良い方法は、辞書で setdefault メソッドを使用することです。
bad for (key, value) in data: if key in groups: groups[key].append(value) else: groups[key] = [value] good groups = {} for (key, value) in data: groups.setdefault(key, []).append(value)
setdefault の機能は次のとおりです: キーが辞書に存在する場合は、対応する値が直接返されます。これは get メソッドと同等です
キーが辞書に存在しない場合は、2 番目のパラメータが返されます。 setdefault はキーの値として使用され、値を返します。
4. defaultdict を使用して辞書オブジェクトを初期化します x が存在しないときに d[x] がエラーを報告したくない場合は、要素を取得するときに get メソッドを使用する以外に、次の方法もあります。コレクションモジュールでdefaultdictを使用します。実際、defaultdictはdictのサブクラスです。 from collections import defaultdict
groups = defaultdict(list)
for (key, value) in data:
groups[key].append(value)
keys = {'a', 'e', 'i', 'o', 'u' } value = [] d = dict.fromkeys(keys, value) print(d) >>> {'i': [], 'u': [], 'e': [], 'a': [], 'o': []}
6. 辞書を使用してswitch
...caseステートメントを実装します Pythonにはswitch...caseステートメントはありません。この問題は、Python の父である Uncle Turtle によって解決されました。これは、この文法が過去にも現在にも存在せず、将来にも存在しないことを意味します。 Python の簡潔な構文は if ... elif を使用して実装できるためです。分岐判定が多すぎる場合には、辞書を代わりに使用することもできます。 if arg == 0:
return 'zero'
elif arg == 1:
return 'one'
elif arg == 2:
return "two"
else:
return "nothing"
good
data = {
0: "zero",
1: "one",
2: "two",
}
data.get(arg, "nothing")
Python には、items メソッドを使用する方法がいくつかあります: d = {
0: "zero",
1: "one",
2: "two",
}
for k, v in d.items():
print(k, v)
for k, v in d.iteritems(): print(k, v)
を使用することです。 iteritems が返す Iterator オブジェクトには遅延読み込み特性があり、実際に必要な場合にのみ値を生成します。このメソッドは、反復プロセス中にこれらのデータを読み込むために追加のメモリを必要としません。 Python3 では、Python2 の iteritems に相当する items メソッドのみが存在し、メソッド名 iteritems が削除されていることに注意してください。
8. 辞書導出を使用します推导式是个绝妙的东西,列表推导式一出,map、filter等函数黯然失色,自 Python2.7以后的版本,此特性扩展到了字典和集合身上,构建字典对象无需调用 dict 方法。
bad numbers = [1,2,3] d = dict([(number,number*2) for number in numbers]) good numbers = [1, 2, 3] d = {number: number * 2 for number in numbers}
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上がPython 辞書のリストの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。