ほんの少しの背景:ユーザーがスケルトンテキスト、2つの数字(下限と上限)、および単語のリストを入力するプログラムを作成しています。出力は、スケルトンテキストに対する一連の変更です。
サンプル入力:
text = "Player # likes @." (replace # with inputted integers and @ with words in list)
lower = 1
upper = 3
list = "apples, bananas, oranges"
ユーザーは、最初に数値を繰り返すことを選択できます。
Player 1 likes apples.
Player 2 likes apples.
Player 3 likes apples.
または最初の言葉:
Player 1 likes apples.
Player 1 likes bananas.
Player 1 likes oranges.
数字キー(ユーザーが入力した整数)または単語キー(入力リストの単語から)に基づいて異なるタイプの辞書を作成し、後で辞書の値を反復処理することで、これら2つの出力方法を分割することにしました。
辞書の作成には次の2種類があります。
def numkey(dict): # {1: ['Player 1 likes apples', 'Player 1 likes...' ] }
text, lower, upper, list = input_sort(dict)
d = {}
for num in range(lower,upper+1):
l = []
for i in list:
l.append(text.replace('#', str(num)).replace('@', i))
d[num] = l
return d
def wordkey(dict): # {'apples': ['Player 1 likes apples', 'Player 2 likes apples'..] }
text, lower, upper, list = input_sort(dict)
d = {}
for i in list:
l = []
for num in range(lower,upper+1):
l.append(text.replace('#', str(num)).replace('@', i))
d[i] = l
return d
異なるタイプの辞書を作成するための2つの別個の関数があることは問題ありませんが、2つの間に多くの繰り返しが見られます。1つの辞書関数を作成し、それに異なる値を渡して、ネストされたforループの順序を変更し、探している特定の{key:value}ペアを作成する方法はありますか?
これがどのように行われるのかわかりません。これに役立つ可能性のある関数型プログラミングやその他のパラダイムに関連するものはありますか?質問は少し抽象的で、何よりもスタイル/デザイン指向です。