【Python】受け取った配列に対し、Keyが1,2,3,4と連番した数字になるような辞書を返す関数 + Unittest
こんばんは、葛の葉です。
引数に配列を渡すと、連番をKeyにした辞書型を返してくれる関数を作りました。必要かどうかわかんないけど、一時、入用だったのですが、多分もういらない関数なのでここで供養させてください。
こんなんなのよ
関数numbering_dictionary()
の引数に['nezumi', 'ushi', 'tora', 'usagi']
のような配列を渡すと{1: 'nezumi', 2: 'ushi', 3: 'tora', 4: 'usagi'}
という辞書を返します。だからなんだってレベルのものですな。
関数はこんな感じ
helper_def.py
という名前で以下のコードを保存してください。
def numbering_dictionary(arry_choices_answer, start_key=1): ''' 受け取った配列に対し、Keyが1,2,3,4と連番した数字になるような辞書を返します。 ex: numbering_dictionary(['nezumi','ushi','tora']) -> {1: 'nemuzi', 2: 'ushi', 3: 'tora'} start_key(int)は連番開始の数字になります。デフォルトは1。 ''' numbring_dictionary = {} for index_number, choices_answer in enumerate(arry_choices_answer, start=start_key): numbring_dictionary[index_number] = choices_answer return numbring_dictionary
Unittestはこんな感じ
Unittest用プログラミングは以下になります。test_helper_def.py
みたいな名前でhelper_def.py
と同じところに保存してください。なお、動作させるだけならこのファイルは要らないです。
import pytest from . import helper_def def test_numbering_dictionary(): array1 = ['nezumi', 'ushi', 'tora', 'usagi'] array2 = ['serval', 'araisan', 'vulpes_zerda', 'silverfox'] array3 = ['one', 'two', 'three', 'four'] assert {1: 'nezumi', 2: 'ushi', 3: 'tora', 4: 'usagi'} == helper_def.numbering_dictionary(array1) assert {1: 'serval', 2: 'araisan', 3: 'vulpes_zerda', 4: 'silverfox'} == helper_def.numbering_dictionary(array2) assert {2: 'one', 3: 'two', 4: 'three', 5: 'four'} == helper_def.numbering_dictionary(array3, start_key=2)