Python 사전 정렬

Guanhui
Guanhui앞으로
2020-06-19 18:19:402619검색

Python 사전 정렬

파이썬에 내장된 사전 데이터 유형은 순서가 없고 키를 통해 해당 값을 얻는다는 것을 알고 있습니다. 하지만 때로는 키나 값에 따라 사전의 항목을 정렬하고 출력해야 하는 경우도 있습니다. 사전의 내용을 정렬하고 출력하는 방법에는 몇 가지가 있습니까? 다음은 몇 가지 흥미로운 솔루션입니다.

Python에는 컨테이너의 데이터를 정렬하는 두 가지 방법이 있습니다. 하나는 컨테이너 자체 정렬 기능이고, 다른 하나는 내장 정렬 기능입니다.

정렬 함수와 정렬 함수의 유일한 차이점은 정렬은 컨테이너(내부)에서 정렬하는 반면 정렬은 새로운 정렬 컨테이너를 생성한다는 것입니다.

1 키 값으로 정렬


#最简单的方法,这个是按照key值排序: 
def sortedDictValues1(adict): 
items = adict.items() 
items.sort() 
return [value for key, value in items] 
 
#又一个按照key值排序,貌似比上一个速度要快点 
def sortedDictValues2(adict): 
keys = adict.keys() 
keys.sort() 
return [dict[key] for key in keys] 
 
#还是按key值排序,据说更快。。。而且当key为tuple的时候照样适用 
def sortedDictValues3(adict): 
keys = adict.keys() 
keys.sort() 
return map(adict.get, keys) 
 
#一行语句搞定: 
[(k,di[k]) for k in sorted(di.keys())] 
 
#用sorted函数的key参数(func)排序: 
#按照key进行排序 
print sorted(dict1.items(), key=lambda d: d[0])

2 값으로 정렬


#来一个根据value排序的,先把item的key和value交换位置放入一个list中,再根据list每个元素的第一个值,即原来的value值,
排序: 
def sort_by_value(d): 
items=d.items() 
backitems=[[v[1],v[0]] for v in items] 
backitems.sort() 
return [ backitems[i][1] for i in range(0,len(backitems))] 
 
#还是一行搞定: 
[ v for v in sorted(di.values())] 
 
#用lambda表达式来排序,更灵活: 
sorted(d.items(), lambda x, y: cmp(x[1], y[1])), 或反序: 
sorted(d.items(), lambda x, y: cmp(x[1], y[1]), reverse=True) 
 
#用sorted函数的key参数(func)排序: # 按照value进行排序 
print sorted(dict1.items(), key=lambda d: d[1])

지식 포인트 확장:

준비 지식:

파이썬에서는 사전이 내장된 데이터 유형입니다. 구조에서 각 요소는 키-값 쌍입니다.

예: dict = {'username': 'password', 'database': 'master'}, 여기서 'username'과 'database'는 키이고 'password' ', 'master'는 값입니다. d[key]를 통해 해당 값에 대한 참조를 얻을 수 있지만, value를 통해 키를 얻을 수는 없습니다.

사전의 경우 다음 사항을 알아야 합니다.

a. 사전 키는 대소문자를 구분합니다.

b 사전에는 순서가 지정되어 있지 않습니다. 요소 순서 개념은 단지 순서 쌍의 단순한 배열일 뿐입니다.

추천 튜토리얼: "

PHP
" "

Python Tutorial"

위 내용은 Python 사전 정렬의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제