ホームページ バックエンド開発 Python チュートリアル 知っておくべきPython辞書の使い方

知っておくべきPython辞書の使い方

Nov 28, 2019 pm 05:12 PM
辞書 使用法

この記事の Python バージョンは 3.7.X です。この記事を読む前に、Python 辞書の基本的な使い方を理解する必要があります。

知っておくべきPython辞書の使い方

はじめに

辞書 (dict) は Python の組み込みデータ構造であり、複数のキーと値のペアで構成されます。 . (キー) と値 (値) はコロンで区切られ、各キーと値のペアはカンマ (,) で区切られ、辞書全体が中括弧 ({}) で囲まれ、キーは一意である必要があり、値は次のように指定できます。ただし、キーは文字列、数値、タプルなどの不変型である必要があります。

推奨: 「Python チュートリアル #」

最下層はハッシュ テーブルを使用して、キーと値を関連付け、dict は順序付けされていません。

##● 検索と挿入の速度が非常に速く、キーの数が増えても速度が低下しません。

##● より多くのメモリが必要です。

したがって、dictは、空間と時間を交換するデータ構造であり、高速検索が必要なシナリオで使用されます。

操作: 一般的なメソッド

get()

指定されたキーの値を返します。キーが存在しない場合は、デフォルト値を返します。 (デフォルトは None ) エラーを報告しない場合、構文は dict.get(key) です。

dict_1['age'] = 24
In [7]: print(dict_1.get('age'))
24
In [11]: print(dict_1.get('nama'))
None
In [12]: print(dict_1['nama'])
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-12-ef61a380920e> in <module>
----> 1 print(dict_1[&#39;nama&#39;])
KeyError: &#39;nama&#39;
ログイン後にコピー

key in dict

in 演算子を使用して、キーが辞書に存在するかどうかを確認します。存在する場合は True を返し、存在しない場合は False を返します。構文は次のとおりです: key in dict 。

In [15]: dict_1
Out[15]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None}
In [16]: print(&#39;name&#39; in dict_1)
True
In [17]: print(&#39;nama&#39; in dict_1)
False
ログイン後にコピー

Python 2 では、この関数は has_key() メソッドを使用して実装されます。

items()

走査可能な (キー、値) タプル配列をリスト形式で返します。構文は dict.items() です。

In [18]: dict_1
Out[18]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None}
In [19]: print(dict_1.items())
dict_items([(&#39;name&#39;, None), (&#39;age&#39;, 24), (&#39;sex&#39;, None)])
In [20]: for key, value in dict_1.items():
    ...:     print(key, value)
    ...:
name None
age 24
sex None
ログイン後にコピー

keys()

辞書のすべてのキーをリストとして返します: dict.keys()

In [21]: dict_1
Out[21]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None}
In [22]: print(dict_1.keys())
dict_keys([&#39;name&#39;, &#39;age&#39;, &#39;sex&#39;])
ログイン後にコピー

values()

辞書内のすべての値をリスト形式で返します: dict.values()

In [27]: dict_1
Out[27]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;Tony&#39;}
In [28]: print(dict_1.values())
dict_values([None, 24, None, &#39;Tony&#39;])
setdefault()
和get()类似,用户获得与给顶尖相关联的值,不同的是,该方法如果键不存在时会添加键并将值设为默认值,语法为:dict.setdefault(key, default=None)。
In [23]: dict_1
Out[23]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None}
In [24]: print(dict_1.setdefault(&#39;name&#39;))
None
In [25]: print(dict_1.setdefault(&#39;name&#39;, &#39;Tony&#39;))
None
In [26]: print(dict_1.setdefault(&#39;sub_name&#39;, &#39;Tony&#39;))
Tony
In [27]: dict_1
Out[27]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;Tony&#39;}
ログイン後にコピー

update()

構文は: dict_1. update(dict_2) は、dict_2 のキーと値のペアを dict_1 に更新するために使用されます。同じキーが存在する場合、それらは上書きされます。

In [31]: dict_1
Out[31]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;Tony&#39;}
In [32]: dict_2
Out[32]: {&#39;name&#39;: &#39;Mary&#39;, &#39;age&#39;: 18, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;&#39;}
In [33]: dict_1.update(dict_2)
In [34]: dict_1
Out[34]: {&#39;name&#39;: &#39;Mary&#39;, &#39;age&#39;: 18, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;&#39;}
ログイン後にコピー

clear()

辞書内のすべての項目を削除します (dict.clear())。例:

In [1]: dict_1 = dict(name="Tony", age=24)
In [2]: dict_2 = dict_1
In [3]: print(dict_2)
{&#39;name&#39;: &#39;Tony&#39;, &#39;age&#39;: 24}
In [4]: dict_2.clear()
In [5]: dict_2
Out[5]: {}
In [6]: dict_1
Out[6]: {}
ログイン後にコピー

copy ( )

元の辞書の浅いコピー。同じキーと値のペアを持つ新しい辞書、dict.copy() を返します。例:

In [1]: dict_1 = dict(name=&#39;Tony&#39;, info=[&#39;boy&#39;, 24])
In [2]: dict_3 = dict_1.copy()
In [3]: dict_3[&#39;name&#39;] = "Ring"
In [4]: dict_3[&#39;info&#39;].remove(&#39;boy&#39;)
In [5]: dict_3
Out[5]: {&#39;name&#39;: &#39;Ring&#39;, &#39;info&#39;: [24]}
In [6]: dict_1
Out[6]: {&#39;name&#39;: &#39;Tony&#39;, &#39;info&#39;: [24]}
ログイン後にコピー

fromkeys( )

シーケンス seq 内の要素を辞書のキーとして使用して、新しい辞書 dict.fromkeys(seq[, value]) を作成します。value はすべてのキーに対応する初期値です。ディクショナリ内で、値は選択パラメータであり、デフォルトはなしです。データの初期化に適しています。例:

In [1]: info = [&#39;name&#39;, &#39;age&#39;, &#39;sex&#39;]
In [2]: dict_1 = dict.fromkeys(info)
In [3]: dict_1
Out[3]: {&#39;name&#39;: None, &#39;age&#39;: None, &#39;sex&#39;: None}
ログイン後にコピー

一般的な操作

辞書のマージ

方法は 4 つあります:

一般的な処理

In [15]: dict_1
Out[15]: {&#39;Tony&#39;: 24}
In [16]: dict_2
Out[16]: {&#39;ben&#39;: 18}
In [17]: dict3 = dict()
In [18]: for key, value in dict_1.items():
    ...:     dict_3[key] = value
    ...:
In [19]: for key, value in dict_2.items():
    ...:     dict_3[key] = value
    ...:
In [20]: dict_3
Out[20]: {&#39;Tony&#39;: 24, &#39;ben&#39;: 18}
ログイン後にコピー

update()

In [9]: dict_1
Out[9]: {&#39;Tony&#39;: 24}
In [10]: dict_2
Out[10]: {&#39;ben&#39;: 18}
In [12]: dict_3 = dict_1.copy()
In [13]: dict_3.update(dict_2)
In [14]: dict_3
Out[14]: {&#39;Tony&#39;: 24, &#39;ben&#39;: 18}
ログイン後にコピー

Dict(d1, **d2) の助けを借りてDictionary メソッド

In [33]: dict_1
Out[33]: {&#39;Tony&#39;: 24}
In [34]: dict_2
Out[34]: {&#39;ben&#39;: 18}
In [35]: dict_3 = dict(dict_1, **dict_2)
In [36]: dict_3
Out[36]: {&#39;Tony&#39;: 24, &#39;ben&#39;: 18}
ログイン後にコピー

Advanced

辞書導出

はリスト導出と似ていますが、次のような利点があります。最下位レベルの C 実装で使用すると、はるかに高速になるため、推奨されます。

辞書のキー値を交換する

辞書内包表記を使用して、辞書のキー値を簡単に交換します:

In [42]: dict_4
Out[42]: {24: &#39;Tony&#39;, 18: &#39;ben&#39;}
In [43]: dict_3
Out[43]: {&#39;Tony&#39;: 24, &#39;ben&#39;: 18}
In [44]: dict_4 = {k:v for v, k in dict_3.items()}
In [45]: dict_4
Out[45]: {24: &#39;Tony&#39;, 18: &#39;ben&#39;}
ログイン後にコピー

辞書から

からサブセットを抽出する 別の辞書のサブセットである辞書を作成したいと考えています。

例:

In [88]: a = {&#39;Ben&#39;: 18, &#39;Jack&#39;: 12, &#39;Ring&#39;: 23, &#39;Tony&#39;: 24}
In [89]: b = {k:v for k, v in a.items() if v > 18}
In [90]: b
Out[90]: {&#39;Ring&#39;: 23, &#39;Tony&#39;: 24}
ログイン後にコピー

順序付き辞書を生成する

Python3.6 より前の辞書は順序付けされていませんが、場合によっては、辞書の順序性を維持する必要があります。 Dictionary, orderDict は dict に基づいて辞書の順序性を実現できます. ここでの order とは辞書のキーが挿入された順に並べることを指します. これにより先入れ先出しの dict が実現されます.制限を超えると、最も早く追加されたキーが最初に削除されます。

例:

In [49]: from collections import OrderedDict
In [50]: ordered_dict = OrderedDict([(&#39;a&#39;, 2), (&#39;b&#39;, 4), (&#39;c&#39;, 5)])
In [51]: for key, value in ordered_dict.items():
    ...:     print(key, value)
    ...:
a 2
b 4
c 5
ログイン後にコピー

OrderedDict は、辞書作成時の挿入順に従って並べ替えられていることがわかります。

原則: OrderedDict は、要素が追加される順序に従ってキーの位置を配置する二重リンク リストを内部的に保持するため、OrderedDict のサイズも通常の辞書の 2 倍以上になります。

リスト内の同じキーを持つ辞書をマージします

いわゆるワンキー多値辞書を生成するには、対応する複数の値が必要です複数の値が一意である必要があるかどうかに応じて、リストやコレクションなどの他のコンテナーに保存されます。

例:

In [64]: from collections import defaultdict
In [65]: a = [{&#39;a&#39;: 1}, {&#39;b&#39;: 3}, {&#39;c&#39;: 4}, {&#39;a&#39;:5}, {&#39;b&#39;:2}, {&#39;b&#39;: 4}]
In [66]: b = defaultdict(list)
In [67]: [b[k].append(v) for item in a for k, v in item.items()]
Out[67]: [None, None, None, None, None, None]
In [68]: b
Out[68]: defaultdict(list, {&#39;a&#39;: [1, 5], &#39;b&#39;: [3, 2, 4], &#39;c&#39;: [4]})
In [69]: b[&#39;a&#39;]
Out[69]: [1, 5]
ログイン後にコピー

2 つの辞書間の類似点と相違点を見つける

シナリオ: 同じ辞書を含む 2 つの辞書間の類似点と相違点を見つけます。キーまたは同じ値。

分析: 辞書は、一連のキー値間のマッピング セットです。次の特性があります:

keys() は、辞書内のすべてのキーと辞書のキーを返します。セット操作をサポートしているため、セットの共通部分と補数を使用して辞書のキーを処理できます。

items() は、(キー, 値) で構成されるオブジェクトを返し、セット操作をサポートします。

values() および Set 操作は、すべての値が一意であるという保証がないためサポートされていませんが、判定操作が必要な場合は、最初に値をセットに変換できます。

例:

In [78]: a = {&#39;a&#39;:1, &#39;b&#39;:2, &#39;c&#39;:3}
In [79]: b = {&#39;b&#39;:3, &#39;c&#39;:3, &#39;d&#39;:4}
In [80]: a.keys() & b.keys()
Out[80]: {&#39;b&#39;, &#39;c&#39;}
In [81]: a.keys() - b.keys()
Out[81]: {&#39;a&#39;}
In [82]: a.items() & b.items()
Out[82]: {(&#39;c&#39;, 3)}
ログイン後にコピー

別の例として、辞書を作成するときに、特定のキーを削除できることが期待されます:

In [85]: a
Out[85]: {&#39;a&#39;: 1, &#39;b&#39;: 2, &#39;c&#39;: 3}
In [86]: c = {k: a[key] for k in a.keys() - {&#39;b&#39;}}
In [87]: c
Out[87]: {&#39;a&#39;: 3, &#39;c&#39;: 3}
ログイン後にコピー

この記事は、

python チュートリアル#から引用しています。 ## コラム、学習へようこそ!

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

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSPコメントの使用法と分類を分析する JSPコメントの使用法と分類を分析する Feb 01, 2024 am 08:01 AM

JSP コメントの分類と使用状況の分析 JSP コメントは 2 つのタイプに分類されます。 単一行コメント: で終わる、単一行のコードのみコメントできます。複数行のコメント: /* で始まり */ で終わると、複数行のコードにコメントを付けることができます。単一行のコメントの例 複数行のコメントの例/**これは複数行のコメントです*コードの複数行にコメントできます*/JSP コメントの使用法 JSP コードを読みやすくするために JSP コメントを使用できます。

辞書内の最初と最後の要素を取得する Python プログラム 辞書内の最初と最後の要素を取得する Python プログラム Sep 07, 2023 pm 05:01 PM

Python は、動的セマンティクスを備えたインタープリタ型のオブジェクト指向の高レベル プログラミング言語です。 1991 年に GudioVanRossum によって開発されました。構造化プログラミング、オブジェクト指向プログラミング、関数型プログラミングなど、複数のプログラミング パラダイムをサポートします。このトピックに入る前に、私たちが提供する質問に関連する基本的な概念を確認しましょう。辞書は、一意で変更可能で、順序付けられた項目のセットです。中括弧は辞書を記述するときに使用され、中括弧にはキーと値が含まれます。キー名を使用して辞書オブジェクトを参照できます。データ値は、キー:値のペアの形式で辞書に保存されます。順序付きと順序なしの意味 辞書に順序があると言うときは、その内容が一定の順序を持​​ち、変化しないことを意味します。未注文のアイテムは明確な順序がないため、使用できません。

空の辞書キーが正しくありません: Python の辞書キー エラーを解決するにはどうすればよいですか? 空の辞書キーが正しくありません: Python の辞書キー エラーを解決するにはどうすればよいですか? Jun 24, 2023 pm 03:03 PM

Python の辞書は、キーと値のペアを保存でき、高速な検索および挿入機能を備えた柔軟で強力なデータ構造です。ただし、ディクショナリのキーと値のペアに注意しないと、ディクショナリ キーが空になるという問題が発生する可能性があります。この問題により、コードがクラッシュしたり、予期しない結果が出力されたりすることがよくあります。この記事では、Python で辞書キーが空のエラーを解決する 2 つの方法を紹介します。方法 1: if ステートメントを使用して、空の辞書キーを回避する Python 辞書は重複キーを持つことができません。重複キーを持つと、以前のキーと値のペアが上書きされます。辞書キーの値が空の場合

Python で辞書内の次のキーを取得するにはどうすればよいですか? Python で辞書内の次のキーを取得するにはどうすればよいですか? Aug 28, 2023 pm 11:45 PM

辞書は、Python の強力なデータ型です。これはキーと値のペアで構成されます。このデータ型を使用すると、検索、追加、その他の操作を効率的に実行できます。辞書内の値にアクセスするのは簡単ですが、場合によっては辞書内の次のキーを検索する必要があるかもしれません。 Python には、特定の要件に応じて、これを実現するためのいくつかの方法が用意されています。この記事では、Python で辞書内の次のキーを取得するさまざまな方法を検討します。キーとインデックスのメソッドを使用すると、Python では辞書は順序付けされていないコレクションになります。したがって、最初にキーを何らかのソートされた形式に変換する必要があります。まず、すべてのキーをリストの形式で追加します。次に、リストにインデックスを付けることで次のキーを見つけることができます。キーの助けを借りて、次のこともできます。

C言語でexit関数を正しく使用する方法 C言語でexit関数を正しく使用する方法 Feb 18, 2024 pm 03:40 PM

C 言語で exit 関数を使用する方法には、具体的なコード例が必要です。C 言語では、プログラムの実行をプログラムの初期段階で終了したり、特定の条件下でプログラムを終了したりする必要があることがよくあります。 C 言語には、この関数を実装するための exit() 関数が用意されています。この記事では、exit() 関数の使用法を紹介し、対応するコード例を示します。 exit() 関数は C 言語の標準ライブラリ関数であり、ヘッダー ファイルに含まれています。その機能はプログラムの実行を終了することであり、整数を取ることができます。

WPSdatedif関数の使い方 WPSdatedif関数の使い方 Feb 20, 2024 pm 10:27 PM

WPS は一般的に使用されるオフィス ソフトウェア スイートであり、WPS テーブル関数はデータ処理と計算に広く使用されています。 WPS テーブルには、2 つの日付間の時差を計算するために使用される、DATEDIF 関数という非常に便利な関数があります。 DATEDIF 関数は英語の DateDifference の略語で、構文は次のとおりです: DATEDIF(start_date,end_date,unit) ここで、start_date は開始日を表します。

Python関数入門:abs関数の使い方と例 Python関数入門:abs関数の使い方と例 Nov 03, 2023 pm 12:05 PM

Python 関数入門: abs 関数の使い方と例 1. abs 関数の使い方の概要 Python では、abs 関数は、指定された値の絶対値を計算するために使用される組み込み関数です。数値引数を受け入れ、その数値の絶対値を返すことができます。 abs 関数の基本構文は次のとおりです。 abs(x) ここで、x は絶対値を計算する数値パラメータであり、整数または浮動小数点数を指定できます。 2. abs 関数の例 以下に、いくつかの具体的な例を通して abs 関数の使用法を示します。 例 1: 計算

Python関数入門:isinstance関数の使い方と例 Python関数入門:isinstance関数の使い方と例 Nov 04, 2023 pm 03:15 PM

Python 関数の紹介: isinstance 関数の使用法と例 Python は、プログラミングをより便利かつ効率的にするための多くの組み込み関数を提供する強力なプログラミング言語です。非常に便利な組み込み関数の 1 つは isinstance() 関数です。この記事では、isinstance関数の使い方と例を紹介し、具体的なコード例を紹介します。 isinstance() 関数は、オブジェクトが指定されたクラスまたは型のインスタンスであるかどうかを判断するために使用されます。この関数の構文は次のとおりです

See all articles