【python】リスト、タプル、辞書にデータを格納

この記事を読めば、リストなどのコンテナをpythonで記述できるようになります。

小学生の時、整理整頓の成績が最低評価だった私が、データを整理するリストなどについて語る資格はないような気がします。しかしながらプログラミングにおいてデータを格納する方法は絶対に外してはいけない要素なので恐縮ですが紹介させていただきます。

始める前に、pythonの実行環境が構築できていない方はこちらの記事を参考にしてみてください。

pythonにおけるリストの書き方

リストとは好きな順番でオブジェクトを保存することができるコンテナです。

Pythonのリストの書き方の説明
リスト形式でデータを格納する場合

リストにオブジェクトを格納するときは以下のルールがあります。

  • 全体をカギカッコで囲む
  • オブジェクト同士はカンマで区切る
  • 割り振られる番号は左から0, 1, 2, 3…..

 

まずは例を見てみましょう。以下の例では、my_first_listという名前のリストに2020アメリカ大統領・副大統領候補の名前を格納しています。

my_first_list = ['D-J-Trump','Mike-Pence','Joe-Byden','Kamala-Harris']
print(my_first_list)

#出力結果→  ['D-J-Trump','Mike-Pence','Joe-Byden','Kamala-Harris']

リスト操作の方法

リストの定義の方法

リストの定義の方法は2つあります。

my_first_list = list()
print(my_first_list)

#出力結果→ []

このように記述すると、空のリストを定義できます。
同様のことを次の記述方法でも実現できます。

my_first_list = []
print(my_first_list)

#出力結果→ []

リストにオブジェクトを追加する

append()メソッドを利用すれば、リストにオブジェクトを追加することができます。
次のように記述してみてください。

my_first_list = [] #空のリストを生成
my_first_list.append('D-J-Trump') #リストに'D-J-Trump'という文字列を追加
print(my_first_list)

#出力結果→ ['D-J-Trump']

すると、初めは空だったリストに、オブジェクトが一つ追加されていることが確認できます。

リストからオブジェクトを消す

pop()メソッドを使えば、リストの末尾からオブジェクトを消去します。
次のように記述して確認してみてください。

my_first_list = ['D-J-Trump','Mike-Pence','Joe-Byden','Kamala-Harris'] #リストを定義
my_first_list.pop() #popメソッドで末尾からオブジェクトを削除
print(my_first_list)

#出力結果→ ['D-J-Trump','Mike-Pence','Joe-Byden']

すると、初め定義したリストの末尾から、一つオブジェクトが消えていることが分かります。(決して、、、悪意はありません)

リストのオブジェクトを確認する

in演算子を使えば、リストにあるオブジェクトがあるかどうかを確認できます。if文などを作る時に使われます。
次のように記述してみてください。

my_first_list = ['D-J-Trump','Mike-Pence','Joe-Byden','Kamala-Harris'] #リストを定義
if 'Joe-Byden' in my_first_list:
    print('アメリカは共産化してしまうだろう')

#出力結果→ アメリカは共産化してしまうだろう

if文は後に続く条件が「True」の場合のみ、下に続く処理を実行します。よって、「’Joe-Byden’ in my_first_list」=「True」であるということが分かります。

リストの長さを確認する

len関数を用いれば、リストの長さを取得することができます。
次のように記述してみてください。

my_first_list = ['D-J-Trump', 'Mike-Pence', 'Joe-Byden', 'Kamala-Harris'] #リストを定義
length = len(my_first_list) #lengthという変数に、リストの長さを格納
print(length)

#出力結果→ 4

複数のリストを連結する

リストを足し算すると、一つのリストに連結することができます。

rep = ['Trump', 'Pence']
   #共和党の候補リスト
dem = ['Byden', 'Harris']
 #民主党の候補リスト

print(rep + dem)

#出力結果→ ['Trump', 'Pence', 'Byden', 'Harris']

二つあったリストが一つのリストとして表現できました。

任意の番号のオブジェクトにアクセスする

リストには左から順に0, 1, 2…と番号が割り振られています。n番目のリストを取得したい場合は、「リスト[n]」と記述します。

my_first_list = ['D-J-Trump','Mike-Pence','Joe-Byden','Kamala-Harris']
print(my_first_list[2])

#出力結果→ Joe-Byden

0から順に数えるので、上の例の様に [2] とすると3番目の要素を取得することになります。

pythonにおけるタプルの書き方

タプルとはリストに似たコンテナの一種です。タプルには次のような特徴があります。

  1. 丸カッコ()の中に記述する
  2. カンマでオブジェクトを区切る
  3. 追加したり削除したりできない

リストと異なるのは、丸カッコへの記述と、追加、削除できないことだけです。
そのほかの部分はリストと同じです。できることを次に列挙したいと思います。

  1. in演算子で、オブジェクトがタプルにあるかどうかを判別
  2. len()関数で、タプルの長さを取得する
  3. タプル[番号]で任意のオブジェクトを取得する

リストの様に、上書きや書き換えができるものを、ミュータブルといいます。逆にタプルの様にできないものをイミュータブルといいます。

以下はタプルの例です。

best_country = ('Japan', 'America', 'England', 'New Zealand')

print('Japan' in best_country)  #in演算子を使う
print(len(best_country))          #len関数でタプルの長さを取得
print(best_country[1])            #任意のオブジェクトにアクセス 

#出力結果↓
True
4
America

Pythonにおける辞書の書き方

辞書とは、キーバリューを用いてオブジェクトを保存できるコンテナです。横文字が多くて、一見わかりづらいですが、具体例を見ると一瞬で理解できます。

Pythonの辞書
辞書型コンテナのキーとバリュー

辞書型のコンテナは図の様に全体をカギカッコで囲みます。そして、キーとバリューをセットで格納してやります。

リストは初めから番号が割り当てられていましたが、辞書の場合は、番号の代わりにキーを自分で定義できるということです。(辞書の場合は番号が定義されていないため、順番はランダムに格納されます。)

辞書の操作の方法

辞書もリストの様にミュータブル(編集可能)なので、オブジェクトを追加・削除などの操作が可能になります。

pythonでの辞書の定義

定義の方法は二種類あります。いずれも変数を辞書として定義します。

my_dict = dict()

とすれば、「my_dict」という変数を辞書として定義できます。(dictionaryの省略としてのdictです。)
同様に、以下の様にも定義できます。

my_dict = {}

pythonで辞書に追加する

辞書にオブジェクトを追加するとき、「辞書名[‘キー’] = ‘バリュー’」と、キーとバリューをセットで指定します。

generation = {'小学生':'天真爛漫'} #オブジェクトが一つ入った辞書を定義

generation['中学生'] = '自意識過剰' #オブジェクトを追加
generation['高校生']  = '大人ぶる'    #さらにオブジェクトを追加

print(generation)

#実行結果 {'小学生': '天真爛漫', '中学生': '自意識過剰', '高校生': '大人ぶる'}

定義するときにあらかじめキーとバリューのセットを入れておくことができます。
あとから追加したいときは、辞書名の後のカギカッコの中にキーを、イコールの後にバリューを指定します。

辞書の中にリストを定義する

辞書のバリューとしてリストやタプルを指定することもできます。

generation = {
    
    '小学生' : [
        '天真爛漫',
        '無邪気',
        'うるさい'
    ],
    
    '中学生' : [
        'ませてる',
        '自意識過剰',
        '自分のことを大人だと思っている'
    ],
    
    '高校生' : [
        '自分が一番すごい',
        '青春',
        '勉強より部活'
    ]
}

上記の例では見やすく改行しています。(pythonはわかりやすさが大切です!)
よく見ると、generationという辞書のバリューとして、リストが設定されていることが分かります。

特定のバリューにアクセスする方法は簡単です。
試しに、キーが「中学生」のリストにアクセスしてみましょう。

print(generation['中学生'])
#出力結果 ['ませてる', '自意識過剰', '自分のことを大人だと思っている']

さらに、バリューの中のリストの特定のオブジェクトにアクセスしたいときは次のように記述します。

print(generation['高校生'][1])
#出力結果→ 青春

これは、リストへのアクセス方法を掛け合わせただけです。

まとめ

以上が、pythonにおけるコンテナの基本です。

プログラミングではたくさんの情報を処理します。情報を保存し、その情報をもとに処理をするときにどうしてもコンテナと操作方法の知識が必要になります。
この基本を押さえておけば、より楽しいプログラミングライフを送ることができると、私は固く信じております。