Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonのトップKの頻繁な要素


空でない整数の配列があるとします。 k番目に頻度の高い要素を返す必要があります。したがって、要素が[1,1,1,1,2,2,3,3,3]でk =2の場合、結果は次のようになります

正式には、関数は-

  • i、j、kが存在する場合はtrueを返します
  • 0≤i

これを解決するには、次の手順に従います-

  • num_freq =空のマップ、freq_list:=空のマップ
  • numsの各要素iについて
    • iがnum_freqにない場合は、num_freq [i]:=1、それ以外の場合はnum_freq[i]を1増やします
  • num_freqマップのキーと値のペアごとに
    • 値がfreq_listに存在しない場合、freq_list [value]:=[key]のリスト、それ以外の場合は、キーをfreq_list[value]配列に挿入します
  • res:=空のリスト
  • for i:=0までの数値の長さ
    • iがfreq_listにある場合は、freq_list[i]の要素をresに追加します
    • resの長さが>=kの場合、中断します
  • 結果を返す

理解を深めるために、次の実装を見てみましょう-

class Solution(object):
   def topKFrequent(self, nums, k):
      number_frequency = {}
      frequency_list ={}
      for i in nums:
         if i not in number_frequency:
            number_frequency[i] = 1
         else:
            number_frequency[i] += 1
      for key,value in number_frequency.items():
         if value not in frequency_list:
            frequency_list[value] = [key]
         else:
            frequency_list[value].append(key)
      result = []
      for i in range(len(nums),0,-1):
         if i in frequency_list:
            result.extend(frequency_list[i])
         if len(result) >=k:
            break
      return result
ob1 = Solution()
print(ob1.topKFrequent([1,1,1,1,2,2,3,3,3], 2))

入力

[1,1,1,1,2,2,3,3,3]
2

出力

[1, 3]

  1. Pythonのリストで連続する要素のペアリング

    Pythonを使用したデータ分析中に、リストの連続する要素をペアにする必要がある場合があります。この記事では、これを実現するためのさまざまな方法を紹介します。 インデックスと範囲あり リスト要素の連続するインデックスをまとめる式を設計します。次に、範囲関数を適用して、この連続する要素のペアリングが続く最大回数を決定します。 例 listA = [51,23,11,45] # Given list print("Given list A: ", listA) # Use res = [[listA[i], listA[i + 1]]    for i i

  2. Pythonで範囲内の要素を削除する

    Pythonから単一の要素を削除するのは、要素のインデックスとdel関数を使用することで簡単です。ただし、インデックスのグループの要素を削除する必要がある場合があります。この記事では、インデックスリストで指定されている要素のみをリストから削除する方法について説明します。 sortとdelの使用 このアプローチでは、削除が発生する必要があるインデックス値を含むリストを作成します。リストの要素の元の順序を保持するために、それらを並べ替えて逆にします。最後に、これらの特定のインデックスポイントの元の指定されたリストにdel関数を適用します。 例 Alist = [11,6, 8, 3, 2] #