Python辞書の詳細

辞書をトラバースする

Pythonディクショナリには、いくつかのキーと値のペアが含まれている場合や、数百万のキーと値のペアが含まれている場合があります。ディクショナリから見ると、大量のデータが含まれている可能性があるため、Pythonはディクショナリの走査をサポートしています。辞書はさまざまな方法で情報を格納するために使用できるため、辞書をトラバースする方法は複数あります。すべてのキーと値のペア、ディクショナリのキーまたは値をトラバースできます。
1.すべてのキーと値のペアをトラバースする
まず、簡単な辞書の例を見てみましょう。辞書は、Webサイトのユーザーに関する情報を格納するために使用されます。次の辞書は、ユーザーのユーザー名、姓、名を格納します。

user_0 = {
	'username' : 'efermi',
	'first' : 'enrico', 
	'last' : 'fermi',
	}

前回の調査の後、辞書の情報を取得する方法はわかりましたが、ユーザー辞書のすべての情報を知りたい場合はどうでしょうか。以前に学習したforループがこのニーズを満たすことができるかどうかを考えますか?それを確認しましょう:

user_0 = {
	'username' : 'efermi',
	'first' : 'enrico', 
	'last' : 'fermi',
	}

for key,value in user_0.items():
	print("\nkey: " + key)
	print("value: " + value)

結果を見てください:

book@www.100ask.org:~/python/L8$ python user.py

key: username
value: efermi

key: last
value: fermi

key: first
value: enrico

forステートメントでは、キーと値のペアのキーと値を格納するために2つの変数が宣言されています。これらの2つの変数では、任意の名前を使用できます。forループの後半には、ディクショナリ名とメソッド項目()が含まれます。キーと値のリストを返し、次にforループで指定された2つの変数に各キーと値のペアを格納し、printステートメントを使用して変数の値を出力します。
注:辞書をトラバースする場合でも、キーと値のペアの戻り順は格納順とは異なります。Pythonはキーと値のペアの格納順を考慮せず、キーと値のペア間の関係のみを追跡します。

favorite_languages = {
	'jen' : 'python',
	'sarah': 'C',
	'edward':'ruby',
	'phil':'python',
	}

for name,language in favorite_languages.items():
	print(name.title() + " 's favorite language is " + 
	language.title() + " . ")

book@www.100ask.org:~/python/L8$ python favorite_languages.py
Sarah 's favorite language is C .
Edward 's favorite language is Ruby .
Jen 's favorite language is Python .
Phil 's favorite language is Python .

2.
ディクショナリのすべてのキーを反復処理するメソッドのキー()は、ディクショナリの値を使用する必要がない場合に役立ちます。以下で使用しましょう:

favorite_languages = {
	'jen' : 'python',
	'sarah': 'C',
	'edward':'ruby',
	'phil':'python',
	}

for name in favorite_languages.keys():
	print(name.title())

結果を見てください:

book@www.100ask.org:~/python/L8$ python favorite_languages.py
Sarah
Edward
Jen
Phil

上記の例では、回答者の名前のみを表示したいので、回答者の名前のみが出力されます。
辞書をトラバースする場合、デフォルトですべてのキーがトラバースされるため、上記のコードでfavourite_languages.keys():の名前をfor name in favourite——languages:に置き換えると、出力は変更されません。
メソッドキー()を明示的に使用してコードを理解しやすくする場合は、そのように選択できますが、必要に応じて省略できます。
このサイクルでは、現在のキーを使用して、それに関連付けられている値にアクセスできます。以下の2つのメッセージを印刷して、2人の友人が好む言語を示します。

favorite_languages = {
	'jen' : 'python',
	'sarah': 'C',
	'edward':'ruby',
	'phil':'python',
	}

friends = ['phil', 'sarah']
for name in favorite_languages.keys():
	print(name.title())

	if name in friends:
		print(" Hi " + name.title() + 
		" , I see your favorite language is " + 
		favorite_languages[name].title() + " ! ")

次に:

book@www.100ask.org:~/python/L8$ python favorite_languages.py
Sarah
 Hi Sarah , I see your favorite language is C !
Edward
Jen
Phil
 Hi Phil , I see your favorite language is Python !

拡張機能を使用してキー()を使用し、誰かが調査中であるかどうかを判断することもできます。

favorite_languages = {
	'jen' : 'python',
	'sarah': 'C',
	'edward':'ruby',
	'phil':'python',
	}

if 'erin' not in favorite_languages.keys():
	print("Erin, please take our poll!")

次に:

book@www.100ask.org:~/python/L8$ python favorite_languages.py
Erin, please take our poll!

メソッドkeys()はトラバーサルに使用されるだけでなく、実際にはディクショナリ内のすべてのキーを含むリストを返すため、上記の例では、erinはメソッドkeys()によって返されるリストに含まれていないため、実行されますifの後のインデントされたステートメント。
3.
ディクショナリ内のすべてのキーを順番にトラバースします。ディクショナリは常にキーと値の間の関連付けを明示的に記録しますが、ディクショナリの要素を取得する場合、取得の順序は予測できません。これは、通常、キーに関連付けられた正しい値。
要素を特定の順序で返すには、1つの方法はforループで返されたキーをソートすることです。したがって、sorted()関数を使用して、次のような特定の順序でキーリストのコピーを取得できます。

favorite_languages = {
	'jen' : 'python',
	'sarah': 'C',
	'edward':'ruby',
	'phil':'python',
	}

for name in sorted(favorite_languages.keys()):
	print(name.title() + " , thank you for taking the poll.")
book@www.100ask.org:~/python/L8$ python favorite_languages.py
Edward , thank you for taking the poll.
Jen , thank you for taking the poll.
Phil , thank you for taking the poll.
Sarah , thank you for taking the poll.

この例のforステートメントは他のforステートメントと同じですが、違いは、sorted関数()がメソッドfavourite_languages.keys()の結果に対して呼び出されることです。リストを並べ替えます。出力は、すべての回答者の名前が順番に表示されていることを示しています。
4.
ディクショナリ内のすべての値を反復処理しますが、ディクショナリに含まれている値のみに関心がある場合は、キーなしで値のリストを返すメソッドの値()を使用できます。たとえば、回答者が選択したさまざまな言語のみを含み、回答者の名前を含まないリストを取得する場合は、次のようになります。

favorite_languages = {
	'jen' : 'python',
	'sarah': 'C',
	'edward':'ruby',
	'phil':'python',
	}

print("The following languages have been mentioned: ")
for language in favorite_languages.values():
	print(language.title())

次に:

book@www.100ask.org:~/python/L8$ python favorite_languages.py
The following languages have been mentioned:
C
Ruby
Python
Python

最も好きな言語の種類を知りたいだけで、同じ言語が多くの人に好かれている必要があるため、重複が発生します。出力結果が重複していることがわかります。これを解決する方法はありますかどんな繰り返し?引き続き見下ろす:

favorite_languages = {
	'jen' : 'python',
	'sarah': 'C',
	'edward':'ruby',
	'phil':'python',
	}

print("The following languages have been mentioned: ")
for language in set(favorite_languages.values()):
	print(language.title())
book@www.100ask.org:~/python/L8$ python favorite_languages.py
The following languages have been mentioned:
Python
C
Ruby

大量のデータがある場合の繰り返し結果の問題を解決するために、Pythonでセットを使用できます。セットはリストに似ていますが、各要素は一意である必要があります。上記の例では、favorite_languages.values()メソッドを使用しますセットは重複していないリストを抽出します。
Pythonの継続的な詳細な調査と学習により、Pythonの組み込み関数が望ましい方法でデータを処理するのに役立つことがわかります。作業には多くの開発プラットフォームがあるため、多くのソフトウェアサポートパッケージとさまざまなAPIが提供されます。

53件の元の記事を公開 賞賛された16件 訪問2213件

おすすめ

転載: blog.csdn.net/m0_37757533/article/details/105339314