練習39-辞書、かわいい辞書-不器用な法学Python 3

6458 ワード

練習39.辞書、かわいい辞書
Pythonのもう一つのデータ構造であるディクショナリを勉強します.ディクショナリ(dictとも呼ばれます)はリストと似たようなデータ格納方法です.しかし、リストとは違って数字でしかデータを取得できません.ディクショナリは何でも取得できます.ディクショナリはデータを格納し組織するデータベースと見なすことができます.
リストと辞書の役割を比較してみましょう.リストは次のことをすることができます.
39 Pythonセッションの練習
>>> things = ['a', 'b', 'c', 'd']
>>> print(things[1]) 
b
>>> things[1] = 'z'
>>> print(things[1]) 
z
>>> things
['a', 'z', 'c', 'd']

リストを数字でインデックスして、リストの中に何があるかを見つけることができます.今まであなたはこの点を理解できるはずです.しかし、リストの要素を数字で取り出すしかないことを自分で理解しなければなりません.
それに比べて、辞書は数字だけでなく、ほとんどのものを使うことができます.はい、辞書はあるものを別のものに関連付けることができます.どんなタイプであっても.見てみましょう
39 Pythonセッションの練習
>>> stuff = {'name': 'Zed', 'age': 39, 'height': 6 * 12 + 2}
>>> print(stuff['name']) 
Zed
>>> print(stuff['age']) 
39
>>> print(stuff['height'])
74
>>> stuff['city'] = "SF"
>>> print(stuff['city']) 
SF

数字ではなく文字列を使ってstuff辞書から欲しいものを取り出したのを見ることができます.文字列を使って辞書に新しいものを追加することもできます.文字列を使わなくてもいいです.私たちはこのようにすることができます.
39 Pythonセッションの練習
>>> stuff[1] = "Wow"
>>> stuff[2] = "Neato"
>>> print(stuff[1]) 
Wow
>>> print(stuff[2]) 
Neato

このコードでは数字を使っているので、辞書を印刷するときに数字も文字列もキーとして使うことができます.私は何でも使えます.はい、ほとんどのものですが、今は何でも使えるふりをしてください.
もちろん、辞書が1つしか置けないとバカです.次は、「del」キーワードで削除する方法です.
39 Pythonセッションの練習
>>> del stuff['city']
>>> del stuff[1]
>>> del stuff[2]
>>> stuff
{'name': 'Zed', 'age': 39, 'height': 74}

辞書の例
次に私たちは練習をしなければなりません.あなたは非常に注意しなければなりません.私はあなたにこの練習を書いて、それから何をしたのか理解してみてください.辞書に物を入れたり、勝手に取り出したり、他の操作をしたりするときは、メモを取ってください.
この例が州名とそれらの略語、州の略語と都市マッピング(mapping)をどのようにしているかに注意してください.「マッピング」あるいは「関連」(associate)は辞書の核心理念であることを覚えておいてください.
ex39.py
1   # create a mapping of state to abbreviation
2   states = {
3       'Oregon': 'OR',
4       'Florida': 'FL',
5       'California': 'CA',
6       'New York': 'NY',
7       'Michigan': 'MI' 
8   }
9
10  # create a basic set of states and some cities in them
11  cities = {
12      'CA': 'San Francisco',
13      'MI': 'Detroit',
14      'FL': 'Jacksonville' 
15  }
16
17  # add some more cities
18  cities['NY'] = 'New York'
19  cities['OR'] = 'Portland' 
20
21  # print out some cities 
22  print('-' * 10)
23  print("NY State has: ", cities['NY'])
24  print("OR State has: ", cities['OR']) 
25
26  # print some states 
27  print('-' * 10)
28  print("Michigan's abbreviation is: ", states['Michigan'])
29  print("Florida's abbreviation is: ", states['Florida']) 
30
31  # do it by using the state then cities dict 
32  print('-' * 10)
33  print("Michigan has: ", cities[states['Michigan']])
34  print("Florida has: ", cities[states['Florida']]) 
35
36  # print every state abbreviation 
37  print('-' * 10)
38  for state, abbrev in list(states.items()):
39      print(f"{state} is abbreviated {abbrev}")
40
41  # print every city in state 
42  print('-' * 10)
43  for abbrev, city in list(cities.items()):
44      print(f"{abbrev} has the city {city}") 
45
46  # now do both at the same time 
47  print('-' * 10)
48  for state, abbrev in list(states.items()):
49      print(f"{state} state is abbreviated {abbrev}")
50      print(f"and has city {cities[abbrev]}") 
51
52  print('-' * 10)
53  # safely get a abbreviation by state that might not be there
54  state = states.get('Texas') 
55
56  if not state:
57      print("Sorry, no Texas.") 
58
59  # get a city with a default value
60  city = cities.get('TX', 'Does Not Exist')
61  print(f"The city for the state 'TX' is: {city}")

あなたは
会話の練習
$ python3.6 ex39.py
----------
NY State has:   New York 
OR State has:   Portland
----------
Michigan's abbreviation is:  MI 
Florida's abbreviation is:  FL
----------
Michigan has:   Detroit 
Florida has:  Jacksonville
----------
Oregon is abbreviated OR 
Florida is abbreviated FL 
California is abbreviated CA 
New York is abbreviated NY 
Michigan is abbreviated MI
----------
CA has the city San Francisco
MI has the city Detroit
FL has the city Jacksonville 
NY has the city New York
OR has the city Portland
----------
Oregon state is abbreviated OR 
and has city Portland
Florida state is abbreviated FL 
and has city Jacksonville 
California state is abbreviated CA 
and has city San Francisco
New York state is abbreviated NY 
and has city New York
Michigan state is abbreviated MI 
and has city Detroit
----------
Sorry, no Texas.
The city for the state 'TX' is: Does Not Exist

辞書は何ができますか.
辞書は別のデータ構造の例であり、プログラミングやリストのようによく使われています.辞書は、保存したいものをいくつかのキーにマッピングしたり、関連付けたりして、それらを取得することができます.同様に、プログラマーたちは現実の辞書とは関係のないものを「辞書」という言葉で指すことはありません.現実世界の例を見てみましょう.
「Honorificabilitudinitatibus」という言葉の意味を調べたいとします.この言葉をコピーして検索エンジンに貼るだけで答えが得られます.検索エンジンは、オックスフォードの英語辞書のような超複雑なバージョンと言える.検索エンジンがない前に、そうするかもしれません.
  • 図書館に行って辞書を見つけて、オックスフォードの辞書を探すと仮定しましょう.
  • 「honorificabilitudinitatibus」がアルファベットHで始まることを知っているので、本の横に小さなHを探しています.
  • その後、H部分でページをめくって「hon」で始まる単語に近づくまで探します.
  • を何ページもめくった後、やっと「honorificabilitudinitatibus」を見つけたか、「hp」で始まる単語をめくったか、オックスフォード辞書にはこの言葉がないことに気づいた.
  • この言葉を見つけたら、その定義を見て意味を理解します.

  • このプロセスは基本的に辞書の動作原理であり、「honorificabilitudinitatibus」という言葉を定義にマッピングします.Pythonの辞書は現実世界のオックスフォードの辞書とよく似ている.
    練習を付け加える
  • は、あなたの国または他の国に都市と州/地域の類似のマッピングを構築します.
  • Pythonの辞書ドキュメントを探して、もっと操作してみてください.
  • 辞書で何ができないか見てみましょう.重要なのは順番がないので、遊んでみてください.

  • よくある質問
    リストと辞書の違いは何ですか?リストは要素の順序付けです.辞書は、いくつかの要素(キー、keys)と他の要素(値、values)を一致させます.
    辞書で何ができますか.あるものを使って別のものを調べる必要があるとき.実は、辞書を「クエリーテーブル」(look up tables)と呼ぶことができます.
    リストで何ができますか?任意の順序付けされたものに使用できます.また、数値インデックスで検索するだけです.
    もし辞書が必要なら、秩序正しく並べてもらいたいのですが、どうすればいいですか?Pythonのcollectionsを見に行こうOrderedDictデータ構造.ネットで関連ドキュメントを探すことができます.