第11回目 辞書型

ページ名:第11回目 辞書型

このページの変更記録

  • 08/24 公開
  • 09/27 課題報告メモを削除
  • 09/27 サンプル一部変更


教科書『Python Pocket Reference』
⇒ 教科書 p.数字,と書いてあれば,そこをみて,印をつけておくことをおすすめ。
この講義では,自分のために役立つプログラムを作成できるようにする。料理でいうと,自炊ができるレベルを目指す。


初期化プログラム

前回と変更してます。
Python の動かし方
講義では,Jupyter Notebook を利用しています。以下を見ておくといいです。


#初期化プログラム。動作確認を含めて,プログラム作成のとき1度実行しておく
from math import * # math モジュールを利用する
from matplotlib.pyplot import * #グラフ関係を利用する
%matplotlib inline
from numpy import * #ベクトル演算,行列演算を効率化
from scipy.stats import norm #正規分布の計算
from pandas import DataFrame, read_csv #表形式を扱う
import py3Dmol #分子モデル表示
pi # πの値が表示されたら,正常動作している
# 課題提出するときは,初期化プログラムをつける必要なし


py3Dmol モジュールがないというエラーが出たら,前回のpy3Dmolインストールを再度実施し,再度,初期化プログラムを実行してください。Azura Jupyuter Notebook では,毎回インストールが必要です。


サンプルプログラムは,ここの表示システムのくせで,行が無駄に空いてます。
本来なら,1行あければ十分です。


辞書型変数と数値文字列変換をできるようにする

⇒ 教科書 (あとで追加する)


サンプルデータ,サンプル関数

以下を実行してください。
私は,化学は詳しくないため,データおよびサンプルプログラムが化学的に妥当でない場合があります。
各自,妥当性は確認すること。


#アミノ酸(amino acid),斎藤が作成のため妥当でないかも。
#A_A[一文字表記] = 英語名,日本語名, PubChem Compound ID
A_A ={} #空の辞書を作る
A_A['A'] = 'alanine', 'アラニン', 5959
A_A['G'] = 'glycine, ', 'グリシン', 750
A_A['M'] = 'methionine', 'メチオニン', 876
A_A['S'] = 'serine', 'セリン', 617
A_A['C'] = 'cysteine', 'システイン', 5862
A_A['H'] = 'histidine', 'ヒスチジン', 773
A_A['N'] = 'asparagine', 'アスパラギン', 236
A_A['T'] = 'threonine', 'トレオニン', 6288
A_A['D'] = 'aspartic acid', 'アスパラギン酸', 424
A_A['I'] = 'isoleucine', 'イソロイシン', 791
A_A['P'] = 'proline', 'プロリン', 145742
A_A['V'] = 'valine', 'バリン', 6287
A_A['E'] = 'glutamic_acid', 'グルタミン酸', 611
A_A['K'] = 'lysine', 'リシン', 5962
A_A['Q'] = 'glutamine', 'グルタミン', 5961
A_A['W'] = 'tryptophan', 'トリプトファン', 6305
A_A['F'] = 'phenylalanine', 'フェニルアラニン', 6140
A_A['L'] = 'leucine', 'ロイシン', 6106


def Amino(ch):

   from py3Dmol import view
   cid_ch = str(A_A[ch][2]) #文字にしたがって,2つ目の情報を文字として取り出す。
   E = py3Dmol.view(query='cid:'+cid_ch, viewergrid=(1,2))
   E.setStyle({'stick': {}}, viewer=(0,0))
   E.setStyle({'sphere': {}}, viewer=(0,1))
   return E

L = Amino('L')
L.show()


コレクション型を復習

 タプル型,リスト型などデータをまとめて扱えるデータ型をコレクション型といいます。今まで,使用したコレクション型は,以下のものがあります。(コレクション型という用語は,初めて使用)


T = (10, 20, 90) #タプル型,これが基本。( ) は,省略可能
L = [100, 95, 90] #リスト型,項の値を変更する可能性があるとき
A = array(T) #numpy.array 型,ベクトル・行列演算をするとき
Df = DataFrame([T, L]) #表として扱うとき
print(type(T), T)
print(type(L), L)
print(type(A), A)
print(type(Df))
Df

コレクション型変数の特定項目を指定するのは

 それぞれの個別の項目の値をみるには,変数名[添字]の形式を使います。[添字]は,数列 An の n に当たり,A[n] と表記する。( ) を使うと関数と勘違いされます。



T[2], L[2], A[2], Df.at[1,2]


辞書型(dict)を使う

 新しく,辞書型を勉強します。
 リスト型の添字にあたるところが文字列となり,辞書のようなデータを保持するのに向いています。


D = {} # 空の辞書を作成
# 変数名['キー語'] = '定義1', '定義2',,,
D['pen'] = 'ペン' #辞書項目を追加
D['desk'] = '机'
D['duck'] = 'アヒル', 'ガーガーと鳴くなく水鳥' #定義部は,複数内容が保持できる。
type(D), D['duck'] # 添字は文字列となる

特定項目を指定するとき


D['duck'][1]


文字列と数値

 Python では,文字をデータとして扱うときに,文字列と呼びます。


a = 'abc'

'abc' を文字列(string, 略して,str)といいます。' ○' の代わりに,"○" でも,いいです。string は,直訳すると,紐(ひも)ですが,プログラム用語としては,文字列,と訳されます。プログラム言語によっては,文字が1文字だけだと,character といい,文字列(string) と区別するものがあります。
数字を文字列と扱うときに混乱しやすいです。

a = 1 #数値として扱う
b = 2 #数値として扱う
s = '1' #文字列として扱う
t = '2' #文字列として扱う
a + b, s + t # 数値として加算,文字列の合体



# a + s を実行しようとすると型不一致エラーとなります。
a + s # TypeError と表示される

エラーがでます。
数値と文字列の合体はできません。
数値に合わせて,合計を作る,または,文字列に合わせて,文字列の合体をします。

#a, s の型をどちらかに合わせる。
#前者は,文字列に合わせた例,後者は,数値に合わせた例(整数のときは,int(), 実数のときは,float()を使用)
str(a) + s, a + int(s)


例1


E = py3Dmol.view(query='cid:611', width=300, height=200)
E.setStyle({'stick': {}})


E.show()


上記の1行目の関数のパラメータで,'cid:611' は,文字列です。もしここを変数に置き換えたとき



num = 611
num_s = str(num)
E = py3Dmol.view(query='cid:' + num_s, width=300, height=200)
E.setStyle({'stick': {}})


E.show()


課題1

 以下の4行を参考にして,my3Dmol(num)関数を作成しなさい。num は,整数型変数です。関数の中では show()はかかないこと。


num = 611 #グルタミン酸
E = py3Dmol.view(query='cid:'+str(num), width=300, height=200)
E.setStyle({'stick': {}})
E.show()

正しくできたら,次の2行で,グリシンの分子が表示されます。

G = my3Dmol(750)
G.show( )


課題2

 myAA3Dmol(ch)関数を作成しなさい。ch は,文字列型変数です。関数の中では show()は書かないこと。
正しく作成できたら,以下の2行で,グルタミン酸の分子が表示されます。


E = myAA3Dmol('E')
E.show()


課題報告は

課題1だけ,または,両方挑戦し,


  • 課題を実施した感想,あれば質問

それに加えて
「辞書型を使用することでき,さらに数値文字列変換ができるようになった」と書き
プログラムも書いてください。


(投稿された他の学生のものはコピーして修正しないこと。これをやると伝言ゲームのようにだんだんおかしなプログラムになる)



登場した用語

  • コレクション型
  • 辞書型(Dictionary Type)
  • 文字列(String)

質問と返答

講義への質問は,suehiro3721p@gmail.com まで


講義メモ(先生のための覚え書き)

シェアボタン: このページをSNSに投稿するのに便利です。


最近更新されたページ

第7回目 関数作成

このページの変更記録08/05 13:36 公開第7回課題実施報告の締め切りは,8/12です。(締め切りに遅れても受付はします)課題報告メールの件名はA-303xxxx-07 名前(漢字名がのぞましい...

トップページ

https://wiki3.jp/MathPython 内で書かれていることは,ご自由にご利用ください。管理者により改変されることもあります。工学部学生のための Python 入門(大学のプログラム入...

Python の動かし方

Jupyter Notebook を使うほぼ互換の Google Colaboratory を使うGoogle ドライブの中で,「新規」の「その他」の中で,Google Colaboratoryを選ぶ...

第14回目 課題実装例

このページの変更記録09/19 執筆中第14回目の課題はありません。今後の Python 利用 Pyrhon プログラムの料理でいうと自炊レベルとは,必要に応じて,自分専用の関数を作れることといってい...

第11回目 辞書型

このページの変更記録08/24 公開09/27 課題報告メモを削除09/27 サンプル一部変更教科書『Python Pocket Reference』⇒ 教科書 p.数字,と書いてあれば,そこをみて,...

第15回目 単位課題

このページの更新記録1019 質問への返答追加08/12 00:15 準備運動のようにキーボード練習をする,を追加08/13 13:16 質問への返答追加。締め切りについて。09/19 16:49 課...

第10回目 インストール

このページの変更記録08/16 17:12 公開08/31 15:07 分子コードの例を追加,文章の言い回し一部訂正インストールAnaconda(アナコンダ)をインストールする 2020年夏現在,Py...

第5回目 For ループ

このページの変更記録08/01 09:09 公開 08/01 09:15 訂正 08/01 12:19 サンプルプログラムに行が余分に空いて表示されると書く08/01 12:54 用語に,「ブロック」...

py3Dmol で画像が出ない。

ブラウザのキャシュエラーキャシュをクリアをする。Ctrl キー押しながら,更新ボタンをおすまたは,キャシュクリアーするツールを起動するChromebook だとhttp://atomurl.net/c...

第8回目 CSVファイル

このページの変更記録08/07 17:52 公開08/07 18:08 誤字訂正,言い回し変更08/08 00:32 サンプルプログラムに「#確認用表示」のコメントを追加08/08 00:36 課題文...

モジュール

ソースプログラムの保管単位 Python 言語の仕様上最初から入っているもの標準モジュールインストール時にいっしょに入るもの外部モジュール組込みモジュール,標準モジュール でないモジュール。組込みモジ...