ホームページ  >  記事  >  バックエンド開発  >  Python 辞書辞書の詳細な説明

Python 辞書辞書の詳細な説明

高洛峰
高洛峰オリジナル
2017-03-08 10:56:032205ブラウズ

ディクショナリはハッシュ テーブルの原理によって実装されており、各要素はキーと値のペアであるため、このハッシュ値が要素のアドレスを決定します。要素のアドレスが異なること、各要素のキーと対応するハッシュ値が完全に異なることを確認する必要があります。また、キーのタイプは変更不可能である必要があるため、キーのタイプは数値、文字列定数、またはタプルですが、リストは変更できるため、リストにすることはできません。

したがって、辞書には次の特徴があります:

1. 要素のクエリと挿入操作は、基本的に一定レベルで非常に高速です。

2. 大量のメモリを消費し、領域を交換する方法を使用します。 time

辞書の初期化

次のメソッドは同等です

d={'a':1, 'b':2, 'c':3}

d=dict({'a': 1, 'b ':2, 'c':3})

d = dict([('a',1), ('b', 2), ('c', 3)])

d = dict(a =1, b=2, c=3)

d = dict(zip(['a', 'b', 'c'], [1,2,3]))#このメソッドは次のことができます2 つのリストは辞書にマージされます

代入要素

1。e = d# 参照代入、e と d は常に同じです

2。割り当て、両方とも無関係です

3. d.copy() は浅いコピーです。キーと値のペアの値が辞書またはリストに遭遇すると、その辞書またはリストも元の変更に応じて変更されます。 time は、それ自体ではなく、タプルまたはリストへの参照またはポインタと同等です。これは、コピー モジュールの deepcopy() メソッドを使用して回避できます。

import copy

dict1 = {'a': [1, 2], 'b': 3}
dict2 = dict1
dict3 = dict1.copy()
dict4 = copy.deepcopy(dict1)

dict1['b'] = 'change'dict1['a'].append('change')print dict1  # {'a': [1, 2, 'change'], 'b': 'change'}print dict2  # {'a': [1, 2, 'change'], 'b': 'change'}print dict3  # {'a': [1, 2, 'change'], 'b': 3}print dict4  # {'a': [1, 2], 'b': 3}

要素の追加

1, d['d'] = 4#キー値がすでに存在する場合、要素を変更することもできます。アクセス可能

要素を削除

1. d.clear()#d内のすべての要素を削除

2.d.pop('a')#キー値「a」を持つ要素を削除

3. del d['a']#キー値'a'を持つ要素を削除

要素を走査

for k in d:

print 'd[%s]=' % k,d[k ] print 'd[%s]=' % k,v

or

for k,v in d.viewitems():

print 'd[%s]=' % k,v

items () ,iteritems() と viewitems() の違い

python2.x の items() は上記のように dict のすべての要素を含むリストを返しますが、これはメモリを浪費するため、後から追加されました (注: Python 2.2 ではiteritems()、iterkeys()、itervalues() はメモリを節約するために反復子を返すために使用されますが、この関数を呼び出した後、反復子は dict の変更を反映できません。そこで、常に最新の要素を表す viewitems() が追加されました。 Python 3.x には items 関数が 1 つだけあり、これは 2.x の viewitems() に相当します。

辞書のマージ

1. dd = dict(dict1.items() + dict2.items())

しかし、上記の分析ガイダンスでは、実際には最初に項目を呼び出します。対応するリストを作成し、リストの追加を実行し、最後にリストを辞書に初期化します

2, dd = dict(dict1, **dict2)

辞書のキーは文字列である必要があります。 Python 2 (インタプリタは CPython) では、文字列以外のキーをキーとして使用できますが、騙されないでください。このハックは、標準の CPython ランタイム環境を使用する Python 2 でたまたま機能するだけです。

上記のステートメントは、dd = dict1.copy()

dd.update(dict2)

と同等です。ここで、dd.update(dict2)は、

for k in dict2

dd[k] =と同等です。 dict2 [k]

update の関数は、存在しない要素を追加するだけでなく、既存のキーの要素値を変更できることがわかります。

そして上記のことから、辞書は update と for...in によってもマージできることがわかります。

並べ替え

dict = { : ,  : ,  : ,  :  sorted(dict.items(), key= sorted(dict.items(), key= d: d[1])

ls = list(dict.keys())
ls.sort()
for k in ls:
    print(k, dict[k])

for k in sorted(dict.keys()):
    print(k, dict[k])

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

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