반응형
Dict 목록에서 공통 Dict 필드의 min () 값을 찾습니다.
다음과 같은 사전 목록이 있습니다.
[{'price': 99, 'barcode': '2342355'}, {'price': 88, 'barcode': '2345566'}]
min () 및 max () 가격을 찾고 싶습니다. 이제 람다식이있는 키를 사용하여 쉽게 정렬 할 수 있습니다 (다른 SO 문서에서 찾을 수 있음). 다른 방법이 없다면 멈춰 있지 않습니다. 그러나 제가 본 것에는 거의 항상 파이썬에 직접적인 방법이 있습니다. 그래서 이것은 제가 조금 더 배울 수있는 기회입니다.
몇 가지 옵션이 있습니다. 다음은 간단합니다.
seq = [x['the_key'] for x in dict_list]
min(seq)
max(seq)
[편집하다]
목록을 한 번만 반복하려는 경우 다음을 시도 할 수 있습니다 (값이 int
s 로 표시 될 수 있다고 가정 ).
import sys
lo,hi = sys.maxint,-sys.maxint-1
for x in (item['the_key'] for item in dict_list):
lo,hi = min(x,lo),max(x,hi)
lst = [{'price': 99, 'barcode': '2342355'}, {'price': 88, 'barcode': '2345566'}]
maxPricedItem = max(lst, key=lambda x:x['price'])
minPricedItem = min(lst, key=lambda x:x['price'])
이것은 최대 가격이 얼마인지뿐만 아니라 어떤 품목이 가장 비싼 지 알려줍니다.
나는 가장 직접적인 (그리고 대부분의 Pythonic) 표현은 다음과 같을 것이라고 생각합니다.
min_price = min(item['price'] for item in items)
이렇게하면 목록을 정렬하는 오버 헤드를 피할 수 있습니다. 목록 이해력 대신 생성기 표현식을 사용하면 실제로 목록을 만들지 않아도됩니다. 효율적이고 직접적이며 읽기 쉬운 ... Pythonic!
한 가지 대답은 생성기 표현식 내에서 관심있는 값에 사전을 매핑 한 다음 내장 min
및 max
.
myMax = max(d['price'] for d in myList)
myMin = min(d['price'] for d in myList)
이것을 사용할 수도 있습니다.
from operator import itemgetter
lst = [{'price': 99, 'barcode': '2342355'}, {'price': 88, 'barcode': '2345566'}]
max(map(itemgetter('price'), lst))
참고 URL : https://stackoverflow.com/questions/5320871/in-list-of-dicts-find-min-value-of-a-common-dict-field
반응형
'Programing' 카테고리의 다른 글
UITableView 콘텐츠 삽입을 영구적으로 설정 (0) | 2020.11.29 |
---|---|
출력을 위해 줄 번호를 추가하고 줄을 묻고 입력에 따라 행동하는 방법은 무엇입니까? (0) | 2020.11.29 |
shouldAutorotateToInterfaceOrientation이 iOS 6에서 호출되지 않음 (0) | 2020.11.29 |
중복 기호 문제 (0) | 2020.11.29 |
ExecJS :: ProgramError : 예상치 못한 토큰 구두점«(», 레이크 자산 실행시«:»예상 구두점 : 프로덕션에서 사전 컴파일 (0) | 2020.11.29 |