Pythonファンデーションを統合
「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