[TIL] Code Kata 8


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値は大きな順序でソートされます.