ホームページ  >  記事  >  バックエンド開発  >  Python マッピング タイプの関連紹介

Python マッピング タイプの関連紹介

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼オリジナル
2019-06-14 14:01:063931ブラウズ

マッピング タイプは、反復可能なキーと値のデータ項目の組み合わせであり、データ項目とそのキーと値にアクセスするためのメソッドを提供します。python3 では、2 つの順序なしマッピング タイプ (組み込み dict と Collections.defaultdict タイプ) がサポートされています。標準ライブラリ。

Python3.1 以降、順序付きマッピング タイプも導入されました: collections.OrderedDict.

関連する推奨事項: 「Python ビデオ

Python マッピング タイプの関連紹介

機能:

1. マップ タイプのキーにはハッシュ可能なオブジェクトのみを使用できるため、組み込みの固定データ タイプはすべてキーとして使用できますマッピング型 (すべての組み込み固定型はハッシュ化可能) 現在公開されている固定データ型は次のとおりです: int、float、complex、bool、str、tuple、frozenset;

2. それぞれに関連付けられた値key には任意のオブジェクトを指定できます;

3. マッピング タイプも反復可能 (反復可能) です。

4. マッピング タイプは、比較演算子、メンバーシップ演算子 in/not in、および組み込みの len() 関数を使用して比較できます。

1.dict (辞書)

dict データ型は、0 ~ n のキーと値を含む、順序付けされていない変数の組み合わせデータ型です。ペアの場合、キーはハッシュ可能なオブジェクトへの参照であり、値は任意のオブジェクトへの参照を指すことができます。キーはハッシュ可能なオブジェクト参照であるため、キーの一意性が保証されます。辞書は可変であるため、データ項目を辞書に追加したり辞書から削除したりできます。辞書は順序付けされていないため、インデックスがなく、操作することもできません。シャーディング オペレーターを使用します。

辞書の作成

1.dict() は関数として呼び出すことができ、この時点で空の辞書が作成されます:

>>> dict()
{}
>>>

dict() マッピング型パラメータが渡されると、次のようなパラメータに基づく辞書が返されます。

>>> d1 = {"key1":"value1","key2":"value2"}
>>> dict(d1)
{'key1': 'value1', 'key2': 'value2'}
>>>

dict() はシーケンス型パラメータも受け入れることができますが、シーケンス自体は 2 つのオブジェクトを含むシーケンスであり、1 つ目はキーとして使用され、2 つ目は値として使用されます。例:

>>> d1 = dict((("k1","v1"),("k2","v2")))   #使用元组创建
>>> d1
{'k1': 'v1', 'k2': 'v2'}
>>> 
>>> d1 = dict([("k1","v1"),("k2","v2")])   #使用序列创建
>>> d1
{'k1': 'v1', 'k2': 'v2'}
>>>

dict() はキーワード パラメータを使用して作成することもできます。はキーワードとして使用され、値はキーワードの値として使用されます。例:

>>> dict(id=1,name="zhangsan",age=23)
{'id': 1, 'name': 'zhangsan', 'age': 23}
>>>

注: キーワードは有効な Python 識別子である必要があります

2。辞書を作成するには中かっこを使用します。 empty {} は空の dict を作成します。空ではない dict は複数の項目で構成され、各項目はカンマで区切られ、各項目は K:V の形式で作成されます。例:

>>> dict2 = {"name":"kobe","age":33,"num":24}
>>> dict2
{'name': 'kobe', 'age': 33, 'num': 24}
>>>

3辞書のコノテーションを使用して辞書を作成します

defaultdict は dict のサブクラスで、dict のすべての操作とメソッドをサポートします。 dict との違いは、dict[x] で値を取得するときに dict に特定のキーが含まれていない場合は KeyError 例外が発生しますが、defaultdict の場合はそのキーをキーとして新しい項目が作成され、値をデフォルト値として使用します。

2.collections.defaultdict (デフォルトの辞書)

コレクションの作成.defaultdict

作成collections.defaultdict、collections.defaultdict() を介して、パラメータに従って作成するには 2 つの方法があります:

* 1. パラメータの型を使用して作成します:

>>> import collections
>>> cd1 = collections.defaultdict(int)
>>> cd2 = collections.defaultdict(list)
>>> cd3 = collections.defaultdict(str)
>>> cd1["x"]
0
>>> cd2["x"]
[]
>>> cd3["x"]
''
>>>

Here, int, list 、str、デフォルト値は 0、[]、"

* 2. 関数名を使用して作成します:

>>> def name():
    return 'zhangsan'
>>> cd4 = collections.defaultdict(name)
>>> cd4["x"]
'zhangsan'
>>>

このようにして、関数のデフォルト値を作成できます。

collections.defaultdict() はパラメータなしまたは None を渡すことができますが、その場合、次のようなデフォルト値はサポートされないことに注意してください:

>>> cd5 = collections.defaultdict()
>>> cd5["x"]
Traceback (most recent call last):
  File "<pyshell#254>", line 1, in <module>
    cd5["x"]
KeyError: &#39;x&#39;
>>>

はい、collections.defaultdict は、dict.

3.collections.OrderedDict #OrderedDict の get(k,v) メソッドと setdefault() メソッドを置き換えることができますすべての dict メソッドをサポートする dict サブクラスであり、キーが挿入された順序を記憶します。新しいエントリが既存のエントリを上書きする場合、元の挿入位置は変更されません。エントリを削除して再挿入すると、エントリは最後に移動します。

class collections.OrderedDict([items])

これらは順序付けされているため、2 つの OrderedDict は順序が同じ場合にのみ同じになります。ただし、OrderedDict と通常の dict を比較する場合、順序は無視されます。 results

from collections import OrderedDict
d = {&#39;banana&#39;: 3, &#39;apple&#39;: 4}
od1 = OrderedDict({&#39;banana&#39;: 3, &#39;apple&#39;: 4})
od2 = OrderedDict({&#39;apple&#39;: 4, &#39;banana&#39;: 3})
print(od1 == od2)
print(od1 == d)

3. キー メソッド

FalseTrue

通常の dict のこのメソッドはパラメータを受け入れず、最後のエントリのみを削除できます; OrderedDict は dict よりも柔軟で、最後のパラメータを受け入れます。 last=Trueの場合は通常の方法と同じでLIFO順序に従い、last=Falseの場合はFIFO順序に従い最初の要素を削除します。 4. 単純な機能強化

OrderedDict は挿入順序を維持するだけです。エントリが変更されても、順序は変更されません。

OrderedDict.popitem(last=True)

実行結果

from collections import OrderedDict
od1 = OrderedDict({&#39;banana&#39;: 3, &#39;apple&#39;: 4})
od1.popitem(False)
print(od1)

しかし、場合によっては、同じ要素を変更して挿入する必要がある この効果は、最初に要素を削除し、変更時に要素を挿入するように __setitem__() メソッドを書き直すことで簡単に強化できます。 ##りー

以上がPython マッピング タイプの関連紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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