Pythonの基盤を統合する(4)

Pythonファンデーションを統合

4、辞書

「Python入門」コースでは、Pythonの4つの主要なデータ構造であるリスト、タプル、辞書、セットについて学びました。その中で、辞書はおそらく最も理解しにくく、データ構造の使用があまり得意ではありません。

今日のコースでは、辞書の知識を統合し、アプリケーションスキルを拡大します。

(1)基本的な考え方

実は、辞書がわかりにくい主な理由は、構造が少し複雑なことです。誰もがシンプルなものが好きで、あまり気になりません。

しかし、もう少し複雑なことは、さらに簡単な場合があります。あなたは何を言っていますか?

このように言えば、コンピューターのハードウェアに慣れていない多くの学生は、分解されたコンピューターの付属品、つまりゴミの山に直面すると言葉を失います。しかし、コンピューターの街の弟の目には、それはまったく異なり、数分で完全なコンピューターに組み立てることができます。あなたはまだこの問題を理解していますか?コンピュータの兄弟がどれほど強力であるかという理由ではありません。これらのアクセサリの各チップまたは統合回路の原則については、実際には兄弟も途方に暮れています。ただし、それらが統合されると、コンポーネントになり、兄弟はどちらかを知るだけで済みます。物はマザーボードであり、その部分はメモリであり、その部分はハードディスクであり、彼はそれをコンピュータに簡単に組み立てることができます。ですから、素晴らしいのは、チップと回路を1つのコンポーネントに統合する人であり、コンピューターの組み立てを容易にしたのは彼/彼らです。

データ構造に戻ると、リスト、タプル、セットよりも少し複雑なタイプの辞書に利点があるのはなぜですか?たとえば、誰もが高みを持っています。特定のデータ収集プロジェクトでこのような大量のデータが必要な場合、多くの人、数百、数千、または数万のリストが手元にある場合は、全員を順番にグループにまとめます。身長を測り、一人一人の身分証明書と身長データを記録します。身分証明書をリストに保存してから身長をリストに保存すると、明らかに2つのリストのデータ量は同じになります。 1対1の対応もあります。ただし、特定のリスト内の1つのデータのみを移動すると、データは完全に台無しになりますか?

したがって、IDと高さのデータをペアで記録することをお勧めします。このように、単一のデータレコードは少し複雑ですが、1つを取得するときに使用でき、各データは完全で効果的です。これを最も単純な「統合」にしたため、分離されたデータではなく、効果的なデータユニットになりました。これはコンピュータコンポーネントのようなもので、使用可能になります。なぜそれらが一緒になっているのかを気にする必要はありませんか?それは正しい組み合わせですか?それは、データを収集して記録する人がすべき正しいことだからです。 IDと高さをペアで記録するために彼らが構築したデータ構造は辞書です!

実際、実生活ではほとんどすべてが関連しており、接続されたデータには意味があります。したがって、私たちが直面するデータはこのように多数存在します。

辞書の使い方を学ぶと、データを扱うときにさらに強力になります!

1、 定義辞書

たとえば、上記の場合、収集されたオブジェクトのグループのIDが1001、1002、1003、1004、1005の場合、それらの高さの測定値は172、169、180、178、および183(メートル)です。

次に、辞書を使用して次のように表現できます。

{1001:172, 1002:169, 1003:180, 1004:178, 1005:183}

ディクショナリは、マッピング関係で情報を記録するデータ構造です。いわゆるマッピング関係とは、ソフトウェアの分野でよく使われる言葉であり、実生活では「1対1の対応」と呼ばれることがよくあります。タイトルは重要ではありません。重要なのは、その意味を理解することです。マッピング関係には常に「1対1の対応」状態があります。Pythonでは、「キーと値」の関係(Key-Value)と呼ばれます。データの各セットは「キーと値のペア」です。たとえば、上記のIDは一意であり、さまざまな測定オブジェクト(人)を表し、キーであり、高さはID(キー)に対応する値です。

2、 辞書の特徴

明らかに、この種の辞書データマッピング関係では、キーは一意です。考えてみてください。もしそれがユニークでなければ、どうなるでしょうか?たとえば、上記のIDが複製されると、対応する高さデータは、それが誰の高さに属しているかを知ることができませんか?正しい? !

これが、辞書のキーを作成するために名前を使用しなかった理由です。

3、 辞書の一般的な操作

(1)辞書を作成する

dict1 = {1001:172, 1002:169, 1003:180, 1004:178, 1005:183}

(2)辞書データの読み取り

dict1 [1001]#キーで対応する値を取得します

172

(3)辞書データを追加する

dict1[1006:176]

dict1

{1001:172, 1002:169, 1003:180, 1004:178, 1005:183, 1006:176}

(4)辞書データの変更

dict1[(1002:168)]

dict1

{1001:172, 1002:168, 1003:180, 1004:178, 1005:183, 1006:176}

(5)他のデータタイプを辞書に変換する

list1 = [( 'Chinese'、83)、( 'Mathematics'、98)、( 'English'、90)]

dict2 = dict(list1)

dict2

{ 「言語」:83、「数学」:98、「英語」:90}

(6)get()メソッド:キーに従って値を読み取る

print(dict1.get(1003))

180

****はdict1 [1003]と同じ結果になることに注意してください。そのとおり!ただし、get()メソッドの値は、dict1 [1007]などのキーが存在しない場合、Pythonはエラーを報告しますが、dict1.get(1007)はエラーを報告せず、値noneを返します。

(7)update()メソッド:ある辞書のデータを別の辞書に追加する

dict3 = dict1.update(dict2)

dict3

{1001:172, 1002:168, 1003:180, 1004:178, 1005:183, 1006:176, 「言語」:83、「数学」:98、「英語」:90}

次の点に注意してください。 update()メソッドが実行されるときに、更新された辞書に対応するキーと値のペアが含まれている場合、元の値が上書きされます。更新された辞書に対応するキーと値が含まれていない場合はい、キーと値のペアが追加されます。

(8)pop(key)メソッド:指定されたキーのキーと値のペアを削除し、指定されたキーの値を返します

dict1.pop(1006)

176

dict1

{1001:172, 1002:169, 1003:180, 1004:178, 1005:183}

(9)clear()メソッド:辞書のすべてのキーと値のペアをクリアするために使用されます

dict2.clear()

dict2

{}

(10)キー内:キーと値のペアが存在するかどうかを判別しますか? True / Falseを返す

1007 in dict1

False

(11)辞書ループ(2つの違いに注意してください)

info = {

' stu_1001':"Lan Wu",

' stu_1002':"Long Lou la",

' stu_1003':"Xiao Ze",

}

基本サイクル、高効率

for i in info:

print(i,info[i])

このループはもう少し複雑ですが、結果は読みやすいです

for k,v in info.items():
print(k,v)

**スペースの制限により、辞書には他にも一般的に使用される方法がいくつかあります。GaoduのWebサイトにアクセスすることをお勧めします。学習、読み取り、およびクエリ用のPythonコースとマイクロクラスの資料が多数あります。 ****

(2)辞書のマルチレベルのネスト

Pythonのデータ構造は、複数のレベルにネストできます。もちろん、辞書も可能です。したがって、辞書オブジェクトは、大量の複雑なデータ情報を運ぶことができます。以下、それを楽しみましょう:

いくつかの州や自治体の情報

province_city_area_dict = {

「ふべい」:{

「武漢市」:[「江安地区」、「江漢地区」、「小口地区」、「漢陽地区」、「武昌地区」、「青山地区」、「紅山地区」、「東西湖地区」、「ハンナン」地区」、「カイディアン地区」、「江夏地区」、「黄平地区」、「新州地区」]、

"黄石市":['黄石港区'、 '西西山岳地帯'、 '小路区'、 'ティシャン区'、 '陽新県'、 '大江市']、

「YichangCity」:[「XilingDistrict」、「WujiagangDistrict」、「DianMilitaryDistrict」、「XiaotingDistrict」、「YilingDistrict」、「Yuan'anCounty」、「XingshanCounty」、「ZiguiCounty」、「Changyang Tujia Autonomous County '、' Wufeng Tujia Autonomous County '、' Yidu City '、' Dangyang City '、' Zhijiang City ']

},

「湖南」:{

「長社市」:[「古龍地区」、「天新地区」、「ユエル地区」、「海府地区」、「玉華地区」、「長社郡」、「王城郡」、「寧翔郡」、劉陽市 ']、

「朱州市」:[「ロータス池地区」、「ルソン地区」、「四峰地区」、「天元地区」、「朱州郡」、「あなた郡」、「チャリング郡」、「ヤンリン郡」、 Liling City ']、

"Xiangtan City":['Yuhu District'、 'Yuetang District'、 'Xiangtan County'、 'Xiangxiang City'、 'Shaoshan City']

},

「広東」:{

「広州市」:[「東山地区」、「李湾地区」、「悦秀地区」、「海荘地区」、「天河地区」、「方雲地区」、「白雲地区」、「黄浦地区」、「汎宇地区」 、「華都地区」、「善城」、「公華市」]、

「ShenzhenCity」:[「LuohuDistrict」、「FutianDistrict」、「NanshanDistrict」、「BaoanDistrict」、「LonggangDistrict」、「YantianDistrict」]、

「朱海市」:[「翔州地区」、「道門地区」、「金湾地区」]

}

}

コード分析:

一部の州や市町村の情報は、2レベルのネストされた辞書で作成されていることがわかります。

最初のレベル:キーは州であり、値は州内のいくつかの都市と地区の情報に対応する辞書です。

2番目のレベル:キーは都市の名前であり、値は都市に含まれる地区名のリストです。

実際、国内のすべての州、市、地域(郡)の情報を、このような2レベルのネストされた辞書に保存して、すべてのデータ情報を保存できることを想像できます。

OK、プログラムにそのような機能がある場合:

def my_function(a):

機能コードブロック(省略)

このデータオブジェクトを関数に渡して、他のデータの処理に参加する必要があります。その後、次のようにするだけで済みます。

my_function(province_city_area_dict)

**超簡単ですか? ****

これは私たちが最初に言ったことですが、もう少し複雑なことがもっと楽になることもあります。辞書の使用に習熟していると、コード作成の複雑さを最小限に抑えることができます。

(3)ケース:3レベルのリンケージメニュー

次の場合、上記の辞書データを使用して、3レベルのリンケージメニューを簡単に作成できます。皆さん、コンピュータに次のコードを手動で入力し、Python Sellを開いてコードを実行すると、州、都市、および地域で3レベルのリンケージメニュー効果をすぐに体験するのが最善です。

def city_menu(data):

for i in data:

print(i)

choie1 = input( "選択したい州は次のとおりです:")

if choie1 in data:

for j in data[choie1]:

print(j)

choie2 = input( "選択したい都市は次のとおりです:")

if choie2 in data[choie1]:

for k in data[choie1][choie2]:

print(k)

choie3 = input( "選択する地域/郡は次のとおりです:")

if choie3 in data[choie1][choie2]:

print( "選択した領域は次のとおりです:" + choie1 + "province" + choie2 + choie3 + "!")

else:

print( "入力が間違っています!")

else:

print( "入力が間違っています!")

else:

print( "入力が間違っています!")

# 関数を呼び出す

city_menu‍(province_city_area_dict)

もちろん、上記のコードは辞書データの使い方を説明するためにのみ使用されています。商用開発用のメニュープログラムとして、通常はこのように記述されておらず、機能は使用習慣に沿ったものになります。

興味のある学生は、上記のコードを変更して、本当に自分に属する3レベルのリンケージメニューを書くことができます。

私はあなたがそれをすることができると信じています!いい加減にして! ! !

Recommended Posts

Pythonの基盤を統合する(4)
Python(7)の基盤を統合する
Python(6)の基盤を統合する
Python(5)の基盤を統合する
Pythonの基盤を統合する(3)
Pythonの基盤を統合する(2)
「Pythonの基盤を統合する」(1)
pythonでのwheelの使用法
Pythonは中国語の4つの車輪を処理します
地主取引のPythonシミュレーション
Pythonの用途は何ですか
Python文字列プーリングの前提
Python3.8の新機能の秘密
Pythonの父がMicrosoftに加わる
python accesshdfsの操作
pythonでのタプルの使用法
pythonを実行するメソッドを終了します
pythonでのrbの意味を理解する
Pythonはスタックの構造を実装できますか?
pythonインタラクティブモードの基本を学ぶ
pythonの必須パラメーターは何ですか
pythonの下部にあるロジスティック回帰
Python3クローラーでのAjaxの使用
PythonはTowerofHanoiゲームを解決します
pythonの複数のバージョンの競合を解決します
Python3.9の7つの機能
python変数の範囲は何ですか
Pythonは分数シーケンスの合計を実装します
Pythonの基礎を学ぶ2日間
pythonのid関数は何ですか
python3のピップパスはどこにありますか
Python言語の本質:Itertoolsライブラリ
2.3Python言語の基盤
python言語の利点は何ですか
pythonインスタンス化オブジェクトの特定のメソッド
2.1 Pythonインタープリター(pythonインタープリター)
python3はマスク描画の機能を実現します
python開発の見通しは何ですか
pythonの関数本体は何ですか
pythonインポートライブラリの特定の方法
pythonの複数のバージョンの競合を解決します
pythonでのadbの機能は何ですか
Python super()メソッドの原理の詳細な説明
javaとpythonの構文の違い
Pythonは学生管理システムの開発を実現します
PythonはDoudizhuでカードのシャッフルを実装します
pythonでのリストの意味と使用法
起動エラーを実行しているpythonの問題を解決します
python辞書の値を変更できますか?
Pythonはスネークゲームのソースコードを実装しています
Pythondecimalモジュールの使用法の詳細な説明
27歳でパイソンを学ぶのはどうですか?
ubuntuでpythonをアンインストールした結果、非常に
Pythonは釣りマスターのゲーム実装を書きます
Python構文の基本
Pythonの基本構文
Pythonの基礎知識(1)
pythonのPrettytableモジュール
09.Python3の共通モジュール
[898] pythonは2つのリストの共通部分を取得します|ユニオン|違い
Python関数パラメータ分類の原理の詳細な説明