python Algorithm #2


numsは数字からなる配列です.
最もよく現れる数字をk個返してください.
ex)
nums = [1,1,1,2,2,3],
k = 2
return [1,2]
nums = [1]
k = 1
return [1]
初回試行コード
def top_k(nums, k):
    a=dict()
    c=[]
    for i in nums:
      a[i]=nums.count(i)

    b=(sorted(a.items(),key = lambda x:x[1] ,reverse=True))

    for i in range(k):
      c.append(b[i][0])

    return c

top_k([1,1,3,3,4,5],2)
numsをfor loopに変換し、count関数のnums値をcount関数として鍵に入れ、ディックシーケンス{1:2,3:2,4:1,5:1}を作成した後にcount値をaに保存します.
a.items()リストにおいて、キー、値[(1,2)、(3,2)、(4,1)、(5.1)]を釘形式で生成する
bという変数では、リストbに値を格納し、lamda xの値(x[1]=値、x[0]=キー)に従って降順に並べ替え、リストbに値を格納する
2つのbの最大値を出力する必要があります.
cリストのindex 0の0番目のtuple index 0(キー)をリストcに追加
カウンタライブラリの使用方法
from collections import Counter

def top_k(nums, k):
  b=[]
  a=Counter(nums).common(k)
  for i in range(k):
    b.append(a[i][0])
  return b
  
top_k([1,1,3,3,4,5],2)
counter関数はnumsの各要素の個数をバイナリ形式に設定します.
.commonはそのディックシリーズから値の大きい順にk個を抽出する.items()の関数とmaxを足した感じ?探してこんなライブラリを使った