ホームページ  >  記事  >  バックエンド開発  >  Python の辞書操作の概要 (例付き)

Python の辞書操作の概要 (例付き)

不言
不言転載
2018-10-20 14:59:202033ブラウズ

この記事は Python 辞書の操作方法をまとめたもの (例付き) です。一定の参考価値があります。困っている友人は参照してください。お役に立てれば幸いです。

辞書 (dict) 構造は、Python で一般的に使用されるデータ構造です。著者は、私の実際の使用経験に基づいて、辞書に関する関連知識を要約し、読者にインスピレーションを与えることを願っています~

辞書の作成

辞書を作成する一般的な方法は、最初に空の辞書を作成し、次にキーと値を 1 つずつ追加することです。たとえば、辞書 person={' を作成します。 name':'Tome', 'age' :22, 'city':'Shanghai, 'ID': '073569'}、次のコードを使用できます:

person = {}
person['name'] = 'Tom'
person['age'] = 22
person['city'] = 'Shanghai'
person['ID'] = '073569'
print(person)

出力結果は次のとおりです:

{'name': 'Tom', 'age': 22, 'city': 'Shanghai', 'ID': '073569'}

この作成方法はシンプルかつ独創的ですが、コードは十分にシンプルかつエレガントではありません。 zip 関数を使用して、この辞書を簡単かつ迅速に作成します。

attrs = ['name', 'age', 'city', 'ID']
values = ['Tom', 22, 'Shanghai', '073569']
person = dict(zip(attrs, values))
print(person)

出力結果は、元のコードと一致します。

辞書のトラバース

実際のアプリケーションでは、辞書のトラバースが必要になることがよくありますが、その実装方法については、次のコードを参照してください:

attrs = ['name', 'age', 'city', 'ID']
values = ['Tom', 22, 'Shanghai', '073569']
person = dict(zip(attrs, values))

for key, value in person.items():
    print('Key:%-6s, Value:%s'%(key, value))

出力結果は次のとおりです。 :

Key:name  , Value:Tom
Key:age   , Value:22
Key:city  , Value:Shanghai
Key:ID    , Value:073569

キーと値のペアの交換

実際のアプリケーションでは、辞書内の特定の値 (値) に対応するキー (キー) を見つける必要がある場合があります。オプションであり、キーと値のペアを交換することも別の選択肢です。キーと値のペアを交換するための実装コードは次のとおりです:

attrs = ['name', 'age', 'city', 'ID']
values = ['Tom', 22, 'Shanghai', '073569']
person = dict(zip(attrs, values))
print('对调前:')
print(person)
Person = {v:k for k,v in person.items()}
print('对调后:')
print(Person)

出力結果は次のとおりです:

对调前:
{'name': 'Tom', 'age': 22, 'city': 'Shanghai', 'ID': '073569'}
对调后:
{'Tom': 'name', 22: 'age', 'Shanghai': 'city', '073569': 'ID'}

Ordered DictionaryOrderedDict

Python の辞書は順序付けされていません。ハッシュとして保存されるため、順序付けされていません。場合によっては、辞書の項目やキーを順序どおりに保存する必要がある場合がありますが、このときは、順序付き辞書構造である collections モジュールの OrderedDict を使用できます。
サンプルコードは以下のとおりです(Pythonのバージョンは3.5.2)

from collections import OrderedDict
d = {}
d['Tom']='A'
d['Jack']='B'
d['Leo']='C'
d['Alex']='D'
print('无序字典(dict):')
for k,v in d.items():
    print(k,v)
d1 = OrderedDict()
d1['Tom']='A'
d1['Jack']='B'
d1['Leo']='C'
d1['Alex']='D'
print('\n有序字典(OrderedDict):')
for k,v in d1.items():
    print(k,v)

出力結果は次のとおりです:

无序字典(dict):
Leo C
Jack B
Tom A
Alex D
有序字典(OrderedDict):
Tom A
Jack B
Leo C
Alex D

Default Dictionary collections.defaultdict

collections.defaultdict は、Python の組み込み dict クラスのサブクラスです。最初のパラメータは、default_factory 属性の初期値を提供し、デフォルトは None# です##。メソッドをオーバーライドし、書き込み可能なインスタンス変数を追加します。他の関数は dict と同じですが、存在しないキーにデフォルト値を提供するため、KeyError 例外が回避されます。
collections.defaultdict の利点を示すために、統計リスト内の単語の出現頻度を例として取り上げます。 通常、統計リストの単語頻度コードは次のとおりです。

words = ['sun', 'moon', 'star', 'star',\
         'star', 'moon', 'sun', 'star']
freq_dict = {}
for word in words:
    if word not in freq_dict.keys():
        freq_dict[word] = 1
    else:
        freq_dict[word] += 1
for key, val in freq_dict.items():
    print(key, val)
出力結果は次のとおりです。

sun 2
moon 2
star 4

collections.defaultdict を使用すると、コードは次のようになります。最適化する:

from collections import defaultdict

words = ['sun', 'moon', 'star', 'star',\
         'star', 'moon', 'sun', 'star']

freq_dict = defaultdict(int)
for word in words:
    freq_dict[word] += 1

for key, val in freq_dict.items():
    print(key, val)
その他のデフォルトの初期値は、リスト、辞書などを設定できます。

以上がPython の辞書操作の概要 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。