Pythonでのdefaultdictの説明

Susan Sarandon
Susan Sarandonオリジナル
2024-12-17 12:24:26677ブラウズ

Explaining defaultdict in Python

使用事例

このページの目的は?コレクション モジュールからの Python の defaultdict の概念と使用法を説明することです。特に奇妙な名前について説明します。これは、David Baezley の Advanced Python Mastery からインスピレーションを得ています。ex_2_2 > を参照してください。コレクション。

defaultdict:

  • 欠落しているキーのデフォルト値を提供します
  • キーを自動的に初期化することで KeyError を回避します
  • 要素を初期化するデフォルトの動作にちなんで名付けられました
  • 手動チェックと挿入を回避してコードを簡素化します
  • 呼び出し可能なオブジェクト (型または関数) のみが初期化に渡されます
  • 指定された例では、リストがデフォルトのファクトリーとして使用されます
  • これは、不足しているキーに対して空のリストが自動的に作成されることを意味します
  • データの効率的なグループ化が容易になります
  • 他のリテラルデフォルト値にラムダ関数を使用することもできます
  • 例:defaultdict(lambda: 0) はキーが欠落している場合に 0 を返します

Advanced Python Mastery のコード例

portfolio
[{'name': 'AA', 'shares': 100, 'price': 32.2}, {'name': 'IBM', 'shares': 50, 'price': 91.1}, {'name': 'CAT', 'shares': 150, 'price': 83.44}, {'name': 'MSFT', 'shares': 200, 'price': 51.23}, {'name': 'GE', 'shares': 95, 'price': 40.37}, {'name': 'MSFT', 'shares': 50, 'price': 65.1}, {'name': 'IBM', 'shares': 100, 'price': 70.44}]
print("### DEFAULTDICT")
from collections import defaultdict

print("#### Group data, e.g. find all stocks with the same name")
byname = defaultdict(list)
for s in portfolio:
    byname[s["name"]].append(s)
byname

# defaultdict(<class 'list'>, {'AA': [{'name': 'AA', 'shares': 100, 'price': 32.2}], 'IBM': [{'name': 'IBM', 'shares': 50, 'price': 91.1}, {'name': 'IBM', 'shares': 100, 'price': 70.44}], 'CAT': [{'name': 'CAT', 'shares': 150, 'price': 83.44}], 'MSFT': [{'name': 'MSFT', 'shares': 200, 'price': 51.23}, {'name': 'MSFT', 'shares': 50, 'price': 65.1}], 'GE': [{'name': 'GE', 'shares': 95, 'price': 40.37}]})

print('#### Find all stocks with the name "IBM"')
byname["IBM"]
# >>> [{'name': 'IBM', 'shares': 50, 'price': 91.1}, {'name': 'IBM', 'shares': 100, 'price': 70.44}]

Lambda の例:

from collections import defaultdict

byname = defaultdict(lambda: 0)
print(byname["missing_key"])  # This will return 0

以上がPythonでのdefaultdictの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。