Python에서 사전을 값별로 정렬하는 방법

1,sorted 고급 함수
이런 방법은 더욱 간결하고 추천합니다.

d={'a':1,'c':3,'b':2}  #  d

#d.items() : dict_items([('a', 1), ('c', 3), ('b', 2)])

d_order=sorted(d.items(),key=lambda x:x[1],reverse=False) #  , 。
                              # x 。
print(d_order)   #  : [('a', 1), ('b', 2), ('c', 3)]

다음은 sorted 정렬 방법에 대한 상세한 설명입니다.
1.sorted 고급 함수 문법 형식:sorted(교체 대상,key=함수 이름,reverse=False/True)
역할: 교체 가능한 대상에서 원소를 순서대로 추출하고 이 원소는 키가 규정한 배열에 따라 정렬한다.
교체 가능 대상: 집합, 시퀀스 (목록, 문자열, 원조), 사전 등 순서대로 값을 얻을 수 있는 대상.
키: 목록 배열의 근거입니다. 일반적으로 하나의 함수를 정의하여 정렬의 근거를 되돌려 주고 함수 이름을 키에 연결할 수 있습니다.
reverse: 반전으로 번역합니다. reverse는 기본적으로 False와 같습니다. 작은 것부터 큰 것까지 정렬합니다.True와 같을 때 큰 것부터 작은 것까지 정렬합니다.
2. 익명 함수 lambda의 형식:     = lambda  [ 1, 2,...] : , 조작 문장 블록에서 발생한 결과를 되돌려주고 함수 이름에 연결합니다.
예: key=lambda x : x[1]       x: 사전 집합의 한 모듈에 해당, 예:dict_items([('a', 1), ('c', 3), ('b', 2)]) 중의 ('a', 1) 또는 ('c', 3) 또는 ('b', 2)
x[1]: x의 두 번째 요소, 즉 키 값이 원조에 대한 값을 되돌려줍니다.dict_items([('a', 1), ('c', 3), ('b', 2)]) 중의 1 또는 2 또는 3
참고:
(1)sorted 함수의 교체 가능 대상은 사전 d를 사용하지 마십시오. 그러면 교체 가능한 사전 d의 키만 사용할 수 있습니다.d.items () 를 사용해야 사전의 키 값을 교체할 수 있습니다.
예: d_ 를 사용할 수 없습니다.order=sorted(d,key=lambda x:x[1],reverse=False)
d_order=sorted(d.items(),key=lambda x:x[1],reverse=False)
(2)sorted 함수가 순서를 정한 후 대상(부치)을 귀속해야 합니다. 예: d_order=sorted(d.items(),key=lambda x:x[1],reverse=False).
사전은 무질서한 형식이기 때문에sorted 함수로 순서를 정한 후 d_를 귀속하지 않습니다order, 사전은 자동으로 순서를 흐트러뜨린다.
2. 목록의.sort () 방법
Python의 사전은 무질서한 유형으로 정렬 방법이 없습니다.리스트로 쓸 수 있어요.sort () 방법으로 정렬합니다.
우리는 우선 사전을 목록으로 바꾸어 정렬해야 한다.
예:

d={'a':1,'c':3,'b':2}  #  d

d.items()    #  : dict_items([('a', 1), ('c', 3), ('b', 2)])

L=list(d.items())    #  : L=[('a', 1), ('c', 3), ('b', 2)]

L.sort(key=lambda x:x[1],reverse=False) #  , 。
                     # x L 

print(L)   #  : [('a', 1), ('b', 2), ('c', 3)]

참고:
 1.위의 예에서 가장 중요한 단계는 L=list(d.items(), 즉: L = list(dict_items([('a', 1), ('c', 3), ('b', 2)])list () 목록 구조 함수로 L= dict_items([('a', 1), ('c', 3), ('b', 2)]) 를 목록으로 바꾸어 목록을 얻습니다:   L=[('a', 1), ('c', 3), ('b', 2)] .
ps: 오늘 아침 나는 오랫동안 고생한 후에야list() 구조 함수가 d.items()에서 발생한dict_를items 키 값은 집합 유형에 대해 목록이 됩니다. 그야말로 NB입니다!
 2.다시 한 번 간단하게 목록의 L.sort () 방법: L.sort (key=함수 이름, reverse=False/True)
L.sort (): 목록의 요소를 자동으로 훑어봅니다. 즉, 원소를 하나씩 꺼냅니다.키에 연결된 함수를 근거로 정렬합니다.
예: L.sort(key=lambda x:x[1], reverse=False) #L=[('a', 1), ('c', 3), ('b', 2)]
목록 L에서 첫 번째 요소 ('a', 1) 메타그룹을 추출하고 메타그룹의 두 번째 요소'1'을 정렬 근거로 합니다.
다시 한 번 순서대로 목록에서 두 번째, 세 번째를 꺼내서...개 요소는 정렬 근거를 정하고,
마지막으로 reverse = False, 작은 것부터 큰 것까지 순서대로 배열한다.
주: L.sort () 내부에 다른 파라미터가 있습니다. 관심 있는 파트너는 도도맘으로 검색해 보세요.
3. 확장:
사실 작은 c군은 jieba 라이브러리로 텍스트 주파수 통계를 할 때 사전의 정렬에 대한 이 문제를 만났다.
젊은이들이 흥미를 느끼면 아래의 코드를 볼 수도 있고, 스스로 텍스트를 찾아서 시험해 볼 수도 있으니 매우 재미있다.

import jieba
with open(" - .txt",'r',encoding='utf-8') as f:
  txt=f.read()
  words=jieba.lcut(txt)
  d={}
  for word in words:
    d[word]=d.get(word,0)+1
  del d[' ']
  del d['
'] with open(" - .txt",'w',encoding='utf-8') as f2: d=sorted(d.items(),key=lambda x:x[1],reverse=True) for x,y in d: f2.write("{}:{}
".format(x,y))
주: 코드를 최적화하여 텍스트 소음을 줄일 수 있습니다.
4. 후기:
오늘 하루 종일 고생하다가 마침내 사전 정렬 문제를 해결하였다.
Python에서 사전을 값에 따라 정렬하는 실현 방법에 관한 이 글은 여기에 소개되었습니다. 더 많은 Python 사전의 값에 따라 정렬하는 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기