값 파이썬으로 dict 정렬
이 질문에 이미 답변이 있습니다.
- 값별로 사전을 정렬하려면 어떻게합니까? 34 답변
내가 사전을 가지고 있다고 가정합니다.
data = {1:'b', 2:'a'}
그리고 'b'와 'a'로 데이터를 정렬하여 결과를 얻습니다.
'a','b'
어떻게하나요?
어떤 아이디어?
값을 얻으려면
sorted(data.values())
일치하는 키를 얻으려면 key
함수를 사용하십시오.
sorted(data, key=data.get)
값으로 정렬 된 튜플 목록을 얻으려면
sorted(data.items(), key=lambda x:x[1])
관련 : 여기 토론 참조 : 사전은 Python 3.6 이상에서 정렬됩니다.
정렬 된 목록을 얻는 대신 실제로 사전을 정렬하려면 collections.OrderedDict
>>> from collections import OrderedDict
>>> from operator import itemgetter
>>> data = {1: 'b', 2: 'a'}
>>> d = OrderedDict(sorted(data.items(), key=itemgetter(1)))
>>> d
OrderedDict([(2, 'a'), (1, 'b')])
>>> d.values()
['a', 'b']
귀하의 의견에서 gnibbler 답변에 이르기까지 값별로 정렬 된 키-값 쌍 목록을 원한다고 말하고 싶습니다.
sorted(data.items(), key=lambda x:x[1])
값 정렬 :
sorted(data.values())
보고
['a','b']
모든 답변에 감사드립니다. 당신은 모두 나의 영웅입니다 ;-)
결국 다음과 같이했습니다.
d = sorted(data, key = d.get)
for id in d:
text = data[id]
또한 Python dict
객체 유형이 해시 테이블 ( 여기에 자세히 설명 )이므로 키 / 값을 목록으로 변환하지 않고는 정렬 할 수 없다는 점에 유의하는 것이 중요하다고 생각 합니다. 이것이 허용 하는 것은 사전에있는 요소의 크기 / 수에 관계없이 dict
일정한 시간에 항목 검색입니다 O(1)
.
즉, 키 sorted(data.keys())
또는 값 을 정렬 sorted(data.values())
하면 해당 목록을 사용하여 다음과 같은 디자인 패턴의 키 / 값에 액세스 할 수 있습니다.
for sortedKey in sorted(dictionary):
print dictionary[sortedKeY] # gives the values sorted by key
for sortedValue in sorted(dictionary.values()):
print sortedValue # gives the values sorted by value
도움이 되었기를 바랍니다.
John에 대한 귀하의 의견에서 값뿐만 아니라 사전의 키와 값을 원한다고 제안합니다.
PEP 256 은 값별로 사전을 정렬하기 위해 이것을 제안합니다.
import operator
sorted(d.iteritems(), key=operator.itemgetter(1))
내림차순을 원하면 다음을 수행하십시오.
sorted(d.iteritems(), key=itemgetter(1), reverse=True)
람다 방법 없음
# sort dictionary by value
d = {'a1': 'fsdfds', 'g5': 'aa3432ff', 'ca':'zz23432'}
def getkeybyvalue(d,i):
for k, v in d.items():
if v == i:
return (k)
sortvaluelist = sorted(d.values())
sortresult ={}
for i1 in sortvaluelist:
key = getkeybyvalue(d,i1)
sortresult[key] = i1
print ('=====sort by value=====')
print (sortresult)
print ('=======================')
You could created sorted list from Values and rebuild the dictionary:
myDictionary={"two":"2", "one":"1", "five":"5", "1four":"4"}
newDictionary={}
sortedList=sorted(myDictionary.values())
for sortedKey in sortedList:
for key, value in myDictionary.items():
if value==sortedKey:
newDictionary[key]=value
Output: newDictionary={'one': '1', 'two': '2', '1four': '4', 'five': '5'}
참고URL : https://stackoverflow.com/questions/16772071/sort-dict-by-value-python
'Nice programing' 카테고리의 다른 글
InnerException (s)에서 모든 메시지를 받고 있습니까? (0) | 2020.10.22 |
---|---|
Eclipse / Maven으로 Hadoop 구축-아티팩트 누락 jdk.tools:jdk.tools:jar:1.6 (0) | 2020.10.22 |
AngularJS 리소스 약속 (0) | 2020.10.22 |
파이프 라인의 sh DSL 명령에서 stdout을 캡처 할 수 있습니까? (0) | 2020.10.22 |
intl 확장 : php_intl.dll 설치 (0) | 2020.10.22 |