Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonコレクション:ステップバイステップガイド

Pythonには、リスト、タプル、セット、辞書の4つのデータ収集タイプがあります。コレクションのPythonモジュールには、次のような追加のオプションがあります。 namedtuple Counter defaultdict 、および ChainMap


Pythonは、リスト、タプル、セット、辞書の4つのコレクションデータ型を提供します。これらの各データ型は、特定の状況で役立ちます。

たとえば、リストは変更できるため、リストを使用して、進化する学生名のリストを保存することができます。または、変更されないアイスクリームフレーバーのリストを保存したいとします。内容を変更できないタプルの方が適切な場合があります。

多くの場合、Pythonで作業しているときに、これらのデータ型が探しているすべての機能を提供していないことに気付く場合があります。幸い、データのコレクションに関連するより高度な機能にアクセスするために使用できるPythonモジュールがあります。Pythonコレクションモジュールです。

Pythonコレクションモジュールは、組み込みのコレクションオプションの機能を改善し、開発者がデータ構造を操作する際の柔軟性を高めるために作成されました。このガイドでは、Pythonコレクションモジュールの基本を説明し、モジュールで最も一般的に使用される4つのデータ構造について説明します。

コレクションの復習

コレクションは、データの格納に使用できるコンテナデータ型です。前に説明したように、コレクションにはリスト、セット、タプル、および辞書を格納できます。これらのデータ型にはそれぞれ独自の特性があります。

リスト

リストは、時間の経過とともに変化する可能性のあるデータを格納するために使用できる、順序付けられた可変のデータ型です。たとえば、既存のリストアイテムを追加、削除、および更新できます。リストには重複する値を含めることができます。インデックス番号を使用して、リスト内の個々のアイテムを参照できます。

以下は、Pythonでリストを宣言する例です。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

sandwiches = ["Cheese", "Ham", "Tuna", "Egg Mayo"]

タプル

タプルは順序付けられ、不変のデータ型です。タプルには重複する値を含めることができますが、それらの値を変更することはできません。タプルは中括弧で囲まれています。

Pythonタプルの例を次に示します。

sandwiches = ("Cheese", "Ham", "Tuna", "Egg Mayo")

セット

セットは順序付けられていないリストです。それらは角括弧を使用して宣言されます。リストとは異なり、セットにはインデックス値がなく、重複するエントリを含めることはできません。

Pythonセットの例を次に示します。

sandwiches = {"Cheese", "Ham", "Tuna", "Egg Mayo"}

辞書

ディクショナリは、インデックスを付けることができる順序付けられていない、変更可能なデータ型です。辞書の各項目には、キーと値があります。

Python辞書エントリの例を次に示します。

sandwich = {
	"name": "Cheese",
	"price": 8.95
}

これらの4つのデータ型は、Pythonでさまざまな用途があります。ただし、Pythonコンテナのデータ型を使用してより高度なアクションを実行する場合は、Pythonコレクションモジュールを検討する価値があります。

コレクションモジュール

Pythonコレクションモジュールには、Pythonの組み込みコンテナに加えて、またはPythonの組み込みコンテナの代わりに使用できる、いくつかの特殊なデータ構造が含まれています。 collections モジュールであるため、プログラムにインポートする必要があります。ただし、Pythonに組み込まれているため、セカンダリライブラリをインポートする必要はありません。

この記事では、コレクションモジュールで最も一般的に使用される4つのデータ構造に焦点を当てます。これらは次のとおりです。

  • カウンター
  • namedtuple
  • defaultdict
  • ChainMap

カウンター

Counter() ディクショナリオブジェクトのサブクラスであり、ハッシュ可能なオブジェクトをカウントするために使用できます。 Counter() 関数は引数としてiterableを取り、辞書を返します。

たとえば、1月のサンドイッチ注文のリストがあり、その月に販売したBLTサンドイッチの数を知りたいとします。 Counter()を使用できます これを行うための関数。

使用するコードの例を次に示します。

from collections import Counter

sandwich_sales = ["BLT", "Egg Mayo", "Ham", "Ham", "Ham", "Cheese", "BLT", "Cheese"]
our_counter = Counter(sandwich_sales)
print(our_counter["BLT"])

プログラムは次を返します:2

私たちのコードでは多くのことが起こっているので、それを分解しましょう。

最初の行で、Counterをインポートします collectionsからの関数 。 collectionsのため、これを行う必要があります モジュールです。次に、sandwich_salesを宣言します 1月に販売したサンドイッチの数を格納する配列。

次の行で、our_counterを宣言します 変数を割り当て、Counter(sandwich_sales)を割り当てます 関数。これにより、Counter()の結果にアクセスできます。 our_counterを参照するときに機能します 。

最後に、print(our_counter[“BLT”])を使用します 辞書にあるサンドイッチの数がBLTに等しいかどうかを印刷します 。この場合、答えは2でした。 。

名前付きタプル

namedtuple() メソッドは、タプル内の各位置の名前を持つタプルを返します。標準のタプルを使用している場合、個々の値にアクセスできる唯一の方法は、タプルのインデックス番号を参照することです。大きなタプルで作業している場合、これはすぐに混乱する可能性があります。

namedtuple()の使用例を次に示します。 サンドイッチの名前と価格を保存する方法:

from collections import namedtuple

Sandwich = namedtuple("Sandwich", "name, price")
first_sandwich = Sandwich("Chicken Teriyaki", "$3.00")
print(first_sandwich.price)

私たちのプログラムは次を返します:$3.00

私たちのコードでは多くのことが起こっているので、それを分解してみましょう。最初の行で、namedtupleをインポートします collectionsから モジュールを使用して、コードで使用できるようにします。

次の行で、Sandwichという名前のSandwichタプルを作成します。 、名前と価格の2つのヘッダーを割り当てます。これにより、これらのヘッダーを使用して、コードの後半でタプルの値を参照できます。次に、first_sandwichという変数を宣言します。 タプルアイテムChicken Teriyakiを割り当てました。 。

最後に、first_sandwichの価格を印刷します 、この場合は$3.00です。

namedtuple()を作成することもできます リストを使用します。次に例を示します:

second_sandwich = Sandwich._make(["Spicy Italian", "$3.75"])
print(second_sandwich.name)

私たちのプログラムは次を返します:Spicy Italian 。この例では、_makeを使用します Sandwichに加えて リストをnamedtuple()に変換することを示す項目 。

defaultdict

defaultdict() メソッドを使用して、存在しないオブジェクトにアクセスしようとしたときにKeyErrorをスローしないPythonディクショナリを作成できます。代わりに、存在しないオブジェクトを参照すると、ディクショナリは事前定義されたデータ型を返します。

defaultdict()を使用する例を次に示します。 strを返す辞書を宣言するメソッド 存在しないオブジェクトを参照する場合:

from collections import defaultdict

sandwiches = defaultdict(str)
sandwiches[0] = "Ham and Cheese"
sandwiches[1] = "BLT"

print(sandwiches[1])
print(sandwiches[2])

プログラムが返されます:

BLT
// This is a blank line

上記の例では、インデックス位置に値を持つ辞書を作成しました および1sandwiches[1]を印刷するとき 、辞書に値が格納されていることがわかります。ただし、インデックス値2に関連付けられているアイテムを印刷しようとすると 、そのインデックスに値が割り当てられていないため、プログラムは空白行を返します。

標準の辞書では、プログラムはKeyErrorを返します。ただし、defaultdictを使用したため 、代わりに、プログラムは辞書の作成時に指定したデータ型を返します。上記の例では、無効なキーはstrを返す必要があると述べました。 、ただし、整数またはその他の有効なデータ型を返すようにコーディングすることもできます。

この関数は、辞書を使用して複数のアイテムに対して操作を実行する場合に役立ちますが、操作は各アイテムに対して機能しない場合があります。プログラムにエラーを返す代わりに、defaultdict() デフォルト値を返し、実行を継続します。

ChainMap

ChainMap() メソッドは、2つ以上の辞書を組み合わせるために使用されます。辞書のリストを返します。たとえば、標準メニューとシークレットメニューの2つのメニューがあり、それらを1つの大きなメニューにマージするとします。これを行うには、ChainMap()を使用できます。 機能。

ChainMap()の使用例を次に示します。 標準メニューとシークレットメニューを統合するには:

from collections import ChainMap

standard_menu = { "BLT": "$3.05", "Roast Beef": "$3.55", "Cheese": "$2.85", "Shrimp": "$3.55", "Ham": "$2.85" }
secret_menu = { "Steak": "$3.60", "Tuna Special": "$3.20", "Turkey Club": "$3.20" }

menu = ChainMap(standard_menu, secret_menu)
print(menu)

このコードは、次のように2つのメニューをマージしたChainMapオブジェクトを返します。

ChainMap({'BLT': '$3.05', 'Roast Beef': '$3.55', 'Cheese': '$2.85', 'Shrimp': '$3.55', 'Ham': '$2.85'}, {'Steak': '$3.60', 'Tuna Special': '$3.20', 'Turkey Club': '$3.20'})

キー名を参照することで、ChainMapの各値にアクセスできます。たとえば、BLTサンドイッチの価格を取得できるコード行は次のとおりです。

print(menu["BLT"])

プログラムの返品:$ 3.05

さらに、ChainMapに含まれる辞書が更新されると、ChainMapが更新されることに注意してください。したがって、standard_menuの値を変更すると またはsecret_menu 辞書、ChainMapオブジェクトも更新されます。次に例を示します:

print(menu)
standard_menu["BLT"] = "$3.10"
print(menu)

コードは次のようになります:

ChainMap({'BLT': '$3.10', 'Roast Beef': '$3.55', 'Cheese': '$2.85', 'Shrimp': '$3.55', 'Ham': '$2.85'}, {'Steak': '$3.60', 'Tuna Special': '$3.20', 'Turkey Club': '$3.20'})

ご覧のとおり、standard_menuで価格を変更したため、BLTの価格は$3.05から$3.10に変更されました。 辞書。

ChainMapオブジェクトには、オブジェクトからキーまたは値を取得するために使用できる2つの関数も含まれています。 keys()を使用してこれを説明できます およびvalues() メソッド。これらのメソッドは、データのキー(特定の値を参照するために使用できます)と、割り当てられている値を返します。

print(list(menu.keys()))
print(list(menu.values()))

コードは次を返します:

['Steak', 'Tuna Special', 'Turkey Club', 'BLT', 'Roast Beef', 'Cheese', 'Prawn', 'Ham']
['$3.60', '$3.20', '$3.20', '$3.05', '$3.55', '$2.85', '$3.55', '$2.85']

keys()を使用すると、コードはChainMapオブジェクトの各アイテムのキーと値を返しました。 およびvalues() 上記の方法。

さらに、new_child()を使用して、ChainMapオブジェクトに新しい辞書を追加できます。 方法。サンドイッチシェフがテストメニューで新しいサンドイッチを試していて、そのうちの2つを新しいメニューに追加したいとします。この目標を達成するために、次のコードを使用できます。

test_menu = { "Veggie Deluxe": "$3.00", "House Club Special": "$3.65" }
new_menu = menu.new_child(test_menu)
print(new_menu)

このコードは、次のように、辞書の先頭に新しいサンドイッチを含む更新されたChainMapを返します。

ChainMap({'Veggie Deluxe': '$3.00', 'House Club Special': '$3.65'}, {'BLT': '$3.05', 'Roast Beef': '$3.55', 'Cheese': '$2.85', 'Shrimp': '$3.55', 'Ham': '$2.85'}, {'Steak': '$3.60', 'Tuna Special': '$3.20', 'Turkey Club': '$3.20'})
>

結論

Pythonコレクションモジュールを使用して、Pythonが提供する組み込みコレクションを拡張し、カスタムデータ構造メソッドにアクセスできます。これは、リストやタプルなどのコレクションデータ型を操作することを検討しているが、バニラ(またはplain)にはない特定の関数を実行する必要がある場合に役立ちます。 )Python。

このガイドでは、例を使用して、Pythonでコレクションを使用する方法を分析し、ライブラリが提供する4つの主要なメソッドについて説明しました。Counternamedtupledefaultdict 、およびChainMap

これで、エキスパートのようにPythonコレクションモジュールの操作を開始するために必要な知識を身に付けることができます。

Pythonを学ぶことで、テクノロジー業界でのキャリアに参入するのにどのように役立つか知りたいですか?今すぐ無料のキャリアカルマアプリをダウンロードして、専門のキャリアコーチの1人と話してください!


  1. Pythonインタープリター:ステップバイステップガイド

    Pythonインタープリターは、マシンに正しいバージョンのPythonがインストールされていることを確認しなくてもオンラインで存在するため、Pythonは非常にアクセスしやすく学習できます。この記事では、Pythonインタープリターとは何かについて説明し、オンラインで使用できる、より人気のある、初心者向けのインタープリターをいくつかリストします。 Pythonプログラムはどのように実行されますか? Pythonは、Javaと同様に、インタプリタ言語またはコンパイル言語として完全に分類することはできません。両方のほんの少しです。 この場合にコンパイルされるということは、どの

  2. Pythonの名前変更ファイル:ステップバイステップガイド

    Python os.rename()メソッドは、ファイルの名前を変更します。 os.rename()は、古いファイルのパスと新しいファイルのパスの2つの引数を受け入れます。新しいファイルパスは別のファイル名で終わる必要があります。 Pythonでファイルを操作しているときに、特定のファイルの名前を変更することを決定する場合があります。たとえば、 raw_data.csvというファイルがある場合 、名前を old_data.csvに変更することをお勧めします プログラムの実行時。 ここでos.rename() メソッドが入ります。os.rename() メソッドを使用すると、Python