2012-02-01 2 views
14

में विशेषता द्वारा सूची आइटम प्राप्त करें मुझे डेटाबेस पंक्ति ऑब्जेक्ट्स की एक सूची को स्मृति में लोड करने की आवश्यकता है, और उसके बाद उन पंक्तियों में से एक को अपनी अद्वितीय आईडी से पकड़ें। एक विशेषता मूल्य द्वारा किसी सूची से एक वस्तु को खोजने का एक साफ, पायथन तरीका है? या मैं बस लूप और तुलना करते हैं?पायथन

+2

एक कारण के लिए नहीं एक डेटाबेस क्वेरी के साथ सीधे यह कर है? – Avaris

+0

यह सिर्फ एक उदाहरण है – Yarin

उत्तर

11

हाँ, आप पाश और तुलना करें:

items = [item for item in container if item.attribute == value] 

और तुम वापस एक सूची है जो आप कितने पाया देखने के लिए परीक्षण किया जा सकता हो।

आप इस एक बहुत कर रही होगी, तो एक शब्दकोश है, जहां प्रमुख विशेषता में आपकी रुचि है है का उपयोग करें।

4

आप filter कर सकते हैं:

matches = filter(lambda obj: obj.attribute == "target value", myListOfObjects) 

दक्षता पर सलाह के लिए kindall के जवाब का संदर्भ लें। यदि आप इसे बहुत कुछ कर रहे हैं, तो यह सही तरीका नहीं है।

+0

इतना कुशलता से करने का सही तरीका क्या होगा? धन्यवाद। – moeseth

12

यह केवल बजाय की तुलना में, पहले ही मैच देता है आप ऐसा करते हैं पूरी सूची: find first sequence item that matches a criterion

आप कुछ इस तरह करते हैं, तो आप अपवाद को पकड़ने, लेकिन इसके बजाय None पाने के लिए की जरूरत नहीं है:

item = next((i for i in items if i == 'value'), None)