はあなたのサンプルの入力はあなたがN1
、N2
、N3
にcaliculationsをしたい input = [T, D, J]
またはinput = [D,J,P]
可能性があります。出力を確認します。各サンプル出力が [('N1', ('T', 100)), ('N2', ('D', 50)), ('N2', ('J', 30))]
、 [('N2', ('D', 50)), ('N2', ('J', 30)), ('N2', ('P', 2))]
であろう場合は、次のよう そして次に溶液です。
#These are some pre decleration supporting constants...
T , D, J, C, P = 'T' , 'D', 'J', 'C', 'P'
NW = [ 'N1', 'N2', 'N3']
#These are actual input data.
N1 = [(100, 'T'), (40, 'D'), (20, 'J'), (10, 'C'), (1, 'P')]
N2 = [(60, 'T'), (50, 'D'), (30, 'J'), (8, 'C'), (2, 'P')]
N3 = [(50, 'T'), (30, 'D'), (20, 'J'), (10, 'C'), (1, 'P')]
swp_tup = lambda N_list: [(t[1], t[0]) for t in N_list] #swaping
#Just creating the swapped tuples collection. This can be avoided by changing the code while creationg of N1, N2, N3.
data = [swp_tup(N1), swp_tup(N2), swp_tup(N3)]
#Creating transpose of given data... to do actual caliculation.
transpose = zip(*data)
# Finding the max value of each row, This row was a column in input data.
def calculate(input_list):
"""Returning the NetworkID with Max for each input type
>>> calculate(['T','D','J'])
[('N1', ('T', 100)), ('N2', ('D', 50)), ('N2', ('J', 30))]
>>> calculate(['D','J','P'])
[('N2', ('D', 50)), ('N2', ('J', 30)), ('N2', ('P', 2))]
"""
output = list()
for i, curr_data in enumerate(transpose):
# finding max of current row.
m = max(curr_data)
# checking if the value is there in given input.
if m[0] in input_list:
results = [i for i, j in enumerate(curr_data) if j == m]
output.append((NW[results[0]] , m))
return output
if __name__ == "__main__":
print calculate([D,J,P])
必要に応じて最適化することができます。間違いなく最適化されたコードが存在する可能性があります。 :)
同様にminも実行できます。
質問が変更された場合、この解決策は無効です。 :)
["N1、N2、N3の文字コードはそれぞれinfactキーと(値、キー)ペアがそれぞれの辞書からすべてフェッチされました]というコメントになりました。"(https:// stackoverflow。 com/questions/44519628 /ガイダンスオンpython-lists#comment76031326_44519775)。オリジナルの辞書を表示するために質問を更新し、問題にどのようにアプローチしてください。私はあなたがここに示したものよりも「元の辞書」を使って問題を解決する方が簡単かもしれないと思う。必要な出力を含めることを忘れないでください。 :) – MSeifert
コメントに投稿してください、ちょうど[編集]質問: – MSeifert
完了し、あなたの助けに感謝します。私は実際にはPythonを学び、さまざまなアルゴリズムを実装しようとしています。 – engqureshi