Python Language
Heapq
खोज…
एक संग्रह में सबसे बड़ा और सबसे छोटा आइटम
किसी संग्रह में सबसे बड़ी वस्तुओं को खोजने के लिए, heapq
मॉड्यूल में एक फ़ंक्शन nlargest
, जिसे हम सबसे nlargest
कहते हैं, हम इसे दो तर्क देते हैं, पहला वह आइटम है जिसे हम पुनः प्राप्त करना चाहते हैं, दूसरा संग्रह नाम है:
import heapq
numbers = [1, 4, 2, 100, 20, 50, 32, 200, 150, 8]
print(heapq.nlargest(4, numbers)) # [200, 150, 100, 50]
इसी तरह, एक संग्रह में सबसे छोटी वस्तुओं को खोजने के लिए, हम nsmallest
फ़ंक्शन का उपयोग nsmallest
हैं:
print(heapq.nsmallest(4, numbers)) # [1, 2, 4, 8]
दोनों nlargest
और nsmallest
कार्यों जटिल डेटा संरचनाओं के लिए एक वैकल्पिक तर्क (प्रमुख पैमाना) ले लो। निम्न उदाहरण people
शब्दकोश से सबसे पुराने और सबसे कम उम्र के लोगों को पुनः प्राप्त करने के लिए age
संपत्ति के उपयोग को दर्शाता है:
people = [
{'firstname': 'John', 'lastname': 'Doe', 'age': 30},
{'firstname': 'Jane', 'lastname': 'Doe', 'age': 25},
{'firstname': 'Janie', 'lastname': 'Doe', 'age': 10},
{'firstname': 'Jane', 'lastname': 'Roe', 'age': 22},
{'firstname': 'Johnny', 'lastname': 'Doe', 'age': 12},
{'firstname': 'John', 'lastname': 'Roe', 'age': 45}
]
oldest = heapq.nlargest(2, people, key=lambda s: s['age'])
print(oldest)
# Output: [{'firstname': 'John', 'age': 45, 'lastname': 'Roe'}, {'firstname': 'John', 'age': 30, 'lastname': 'Doe'}]
youngest = heapq.nsmallest(2, people, key=lambda s: s['age'])
print(youngest)
# Output: [{'firstname': 'Janie', 'age': 10, 'lastname': 'Doe'}, {'firstname': 'Johnny', 'age': 12, 'lastname': 'Doe'}]
एक संग्रह में सबसे छोटी वस्तु
heap
का सबसे दिलचस्प गुण यह है कि इसका सबसे छोटा तत्व हमेशा पहला तत्व होता है: heap[0]
import heapq
numbers = [10, 4, 2, 100, 20, 50, 32, 200, 150, 8]
heapq.heapify(numbers)
print(numbers)
# Output: [2, 4, 10, 100, 8, 50, 32, 200, 150, 20]
heapq.heappop(numbers) # 2
print(numbers)
# Output: [4, 8, 10, 100, 20, 50, 32, 200, 150]
heapq.heappop(numbers) # 4
print(numbers)
# Output: [8, 20, 10, 100, 150, 50, 32, 200]
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow