1. 程式人生 > 其它 >將陣列中的數字按出現次數排序列印

將陣列中的數字按出現次數排序列印

技術標籤:資料結構與演算法題集錦

例如:[0,1,2,0,2,2,1,1,4],則輸出[4,0,1,2]或按順序打印出4,0,1,2。

l= [0,1,2,0,2,2,1,1,4]

dic = {}
for v in l: # 統計每個數字出現的次數並存入dictionary,數字本身為key,出現的次數為value。
  if v in dic:
    dic[v] = dic[v] + 1
  else:
    dic[v] = 1

l_new = [None] * len(l) # 生成一個list
for k,v in dic.items(): # 將dictionary中統計的數字放入list,數字出現次數為list下標,元素為數字本身。
  if l_new[v] is None: # 如果發現下標衝突了,則放入下一個位置。
    l_new[v] = k
  else:
    l_new[v + 1] = k

print([i for i in l_new if i is not None]) # 最後將非None的元素輸出即可。