Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 요소의 빈도를 증가시켜 배열을 정렬하는 프로그램

<시간/>

요소가 여러 번 나타날 수 있는 일부 요소가 있는 배열이 있다고 가정합니다. 요소가 빈도 증가에 따라 정렬되도록 배열을 정렬해야 합니다. 따라서 어떤 요소가 더 적게 나타나는지 먼저 표시되는 식입니다.

따라서 입력이 nums =[1,5,3,1,3,1,2,5]와 같으면 출력은 [2, 5, 5, 3, 3, 1, 1, 1]

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • mp :=새 지도

  • nums의 각 고유 요소 i에 대해 수행

    • x:=숫자로 표시되는 i의 수

    • x가 mp에 있으면

      • mp[x]

        끝에 i 삽입
    • 그렇지 않으면 mp[x] :=요소가 하나만 있는 목록 i

  • ans:=새 목록

  • 키를 기준으로 mp를 정렬하는 각 i에 대해 다음을 수행합니다.

    • mp[i] 목록을 역순으로 정렬한 각 j에 대해

      • j, i 횟수를 ans에 삽입

  • 반환

예제(파이썬)

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(nums):
   mp = {}
   for i in set(nums):
      x=nums.count(i)
      try:
         mp[x].append(i)
      except:
         mp[x]=[i]
   ans=[]

   for i in sorted(mp):
      for j in sorted(mp[i], reverse=True):
         ans.extend([j]*i)
   return ans

nums = [1,5,3,1,3,1,2,5]
print(solve(nums))

입력

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

출력

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