반응형
딕트 목록에서 공통 키의 최소값/최대 값을 찾는 방법은 무엇입니까?
다음과 같은 사전 목록이 있습니다.
[{'price': 99, 'barcode': '2342355'}, {'price': 88, 'barcode': '2345566'}]
나는 그것을 찾고 싶습니다.min()
그리고.max()
가격.이제 람다 식을 가진 키(다른 스택 오버플로 게시물에서 볼 수 있듯이)를 사용하여 충분히 쉽게 정렬할 수 있으므로 다른 방법이 없으면 꼼짝할 수 없습니다.하지만 제가 본 바로는 파이썬에는 거의 항상 직접적인 방법이 있기 때문에 이것은 제가 조금 더 배울 수 있는 기회입니다.
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'])
이것은 최대 가격이 얼마인지 뿐만 아니라 어떤 품목이 가장 비싼지도 알려줍니다.
몇 가지 옵션이 있습니다.여기 간단한 것이 있습니다.
seq = [x['the_key'] for x in dict_list]
min(seq)
max(seq)
[편집]
목록을 한 번만 반복하려는 경우 이를 시도할 수 있습니다(값이 다음과 같이 표시될 수 있다고 가정).int
:
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)
제 생각에 가장 직접적인 (그리고 가장 파이썬적인) 표현은 다음과 같은 것일 것입니다.
min_price = min(item['price'] for item in items)
이렇게 하면 목록을 정렬하는 데 드는 오버헤드를 방지할 수 있으며, 목록 이해 대신 생성기 식을 사용하여 목록을 만드는 것도 방지할 수 있습니다.효율적이고, 직접적이고, 읽을 수 있는...천박한 놈!
한 가지 대답은 딕트를 생성기 식 내부의 관심 값에 매핑한 다음 기본 제공 기능을 적용하는 것입니다.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/how-to-find-the-min-max-value-of-a-common-key-in-a-list-of-dicts
반응형
'programing' 카테고리의 다른 글
node_modules를 삭제하는 방법 - Windows에서 Deep Nested Folder (0) | 2023.05.21 |
---|---|
바우어(및 npm) 버전 구문은 무엇입니까? (0) | 2023.05.21 |
Git에서 원격으로 분기 이름 바꾸기 (0) | 2023.05.16 |
Bash에서 파일이 비어 있는지 확인하는 방법은 무엇입니까? (0) | 2023.05.16 |
tslint / codelyzer / ng lint 오류: "for (... in...) 문은 if 문으로 필터링해야 합니다." (0) | 2023.05.16 |