이것은 다음 질문입니다. remove(min())
으로 목록에서 최소를 제거하는 방법을 알고 있지만 사전은 제거하지 못합니다. 나는 Python 사전에서 가장 낮은 가격을 제거하려고 노력하고있다.파이썬 최저 가격 사전
shops['foodmart'] = [12.33,5.55,1.22]
shops['gas_station'] = [0.89,45.22]
이것은 다음 질문입니다. remove(min())
으로 목록에서 최소를 제거하는 방법을 알고 있지만 사전은 제거하지 못합니다. 나는 Python 사전에서 가장 낮은 가격을 제거하려고 노력하고있다.파이썬 최저 가격 사전
shops['foodmart'] = [12.33,5.55,1.22]
shops['gas_station'] = [0.89,45.22]
구체적으로는, 예를 들어 주어진 :
shops['foodmart'].remove(min(shops["foodmart"]))
을 더 일반적으로, 모든 사전 님
for shop in shops :
shops[shop].remove(min(shops[shop]))
논리는 언급 목록의 값을 삭제하는 것과 같다 알 잖아. shops[shop]
그 자체도 귀하의 경우 목록에 포함됩니다. 목록에서하는 일도 여기에 적용됩니다.
더 빠르고 Lattyware에 의해 제안 청소기 방법은 다음과 같습니다
for prices in shops.values():
prices.remove(min(prices))
키를 반복하면서이 값이 약간 이상합니다.하지만 원하는 값입니다. ''prices.remues (min (prices))''는''stores.values () :''가격이 더 짧아지고, 더 명확 해지고 빠를 것이다. –
@Lattyware 네, 당신은 틀림 없습니다. 감사. 나는 이미 그 때까지 또 다른 대답을했기 때문에 나는 그것을 언급하지 않았다. – asheeshr
>>> shops={}
>>> shops['foodmart'] = [12.33,5.55,1.22]
>>> shops['gas_station'] = [0.89,45.22]
>>> shops
{'foodmart': [12.33, 5.55, 1.22], 'gas_station': [0.89, 45.22]}
>>> for x in shops: #iterate over key
shops[x].remove(min(shops[x])) # min returns the smallest value and
# that is passed to remove
>>> shops
{'foodmart': [12.33, 5.55], 'gas_station': [45.22]}
나 : 최소 가격이 고유 한 경우
가>>> for values in shops.values(): #iterate over values
... values.remove(min(values))
...
>>> shops
{'foodmart': [12.33, 5.55], 'gas_station': [45.22]}
은 위의 모든 솔루션이 작동 것이다, 그러나의를 목록에서 제거해야하는 최소값이 두 개 이상인 경우 다음 구조를 사용할 수 있습니다.
{k : [e for e in v if e != min(v)] for k, v in shops.items()}
여기서주의해야 할 점은 list.remove를 사용하면 목록에서 바늘 (일명 최소값)과 일치하는 첫 번째 항목을 실제로 제거하지만 한 번에 모든 분을 제거하기 위해서는 최소값과 일치하는 모든 항목을 필터링하여 목록을 재구성하십시오. 참고,이 list.remove를 사용하는 것보다 속도가 느린 것, 그러나 마지막에 당신은 위의 구조가 간결하다하지만, 불행하게도 당신의 필요 조건
무엇인지 결정해야, 아직 모든 각 가격 요소에 대한 min
를 호출 끝 가게. 오버 헤드를 줄이기 위해 루프 구조로 변환하지 않을 수도 있습니다.
>>> for shop, price in shops.items():
min_price = min(price)
while min_price in price:
shops[shop].remove(min_price)
>>> shops
{'foodmart': [12.33], 'toy_store': [15.32], 'gas_station': [45.22], 'nike': [69.99]}
>>>
목록의 최저 가격이 두 번 같으면 어떻게 될까요? '[1.0, 1.0, 2.0, 5.0]'? 둘 다 제거해야합니까 아니면 둘 중 하나만 제거해야합니까? – DSM