[TIL] Code Kata 8
3258 ワード
def top_k(nums, k):
nums_number = list(set(nums))
final_list = []
count_dict = {}
for i in nums_number:
count_dict[i] = nums.count(i)
dict_tuple = count_dict.items()
sorted_dict_tuple = sorted(dict_tuple, reverse=True, key=lambda x:x[1])
for i in range(k):
final_list.append(sorted_dict_tuple[i][0])
return final_list
この問題を説明すると,繰り返し回数が最も多い数値順にk個をリストに含めて返すべきである.最初はリストで表現しようと思ったが、うまくいかなかった.だから私が考えたのはディック・シャナリーです.まずlist(set(nums))を使用して重複する数値を削除し、リストに入れます.次に、リストに含まれる数の個数に基づいてfor文をdickShownery形式に変換し、ex{'1':個数、'2':個数}を作成します.count dict.items(){(「1」:個数)、(「2」:個数)}を使用してこのように作成し、dickShowneryもリストのようにindexを使用することができます.生成されたディックシーケンスを、ソート方法を使用して値の大きい順序でソートします.ソート(dict tuple,reverse=True,key=lambda x:x[1])->x:x[1]の意味表示値.x:x[0]はキー値を表します.
このように並べられたディックシーケンスをfor文でk回回し、キー値を順に抽出すればよい.
このため、value値は大きな順序でソートされます.
Reference
この問題について([TIL] Code Kata 8), 我々は、より多くの情報をここで見つけました https://velog.io/@chan_baek/TIL-Code-Kata-8テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol