Python에서 사전을 값별로 정렬하는 방법
이런 방법은 더욱 간결하고 추천합니다.
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 사전의 값에 따라 정렬하는 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.