Kuzunoha-NEのブログ

プログラミングなどの勉強をしてます

【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)