2013-02-09 15 views

उत्तर

32

मैं शायद लिखना चाहते हैं:

>>> lod = [{1: "a"}, {2: "b"}] 
>>> any(1 in d for d in lod) 
True 
>>> any(3 in d for d in lod) 
False 

हालांकि अगर वहाँ इस सूची आप अपने डेटा संरचना पर पुनर्विचार करना चाह सकते हैं में dicts का एक बहुत होने जा रहे हैं। अगर यह वहां नहीं है

>>> next(i for i,d in enumerate(lod) if 1 in d) 
0 
>>> next(d for i,d in enumerate(lod) if 1 in d) 
{1: 'a'} 
>>> next((i,d) for i,d in enumerate(lod) if 1 in d) 
(0, {1: 'a'}) 

यह StopIteration बढ़ा देंगे:

>>> next(i for i,d in enumerate(lod) if 3 in d) 
Traceback (most recent call last): 
    File "<ipython-input-107-1f0737b2eae0>", line 1, in <module> 
    next(i for i,d in enumerate(lod) if 3 in d) 
StopIteration 

आप सूचकांक और/या शब्दकोश जहां पहले मैच पाया जाता है चाहते हैं, एक दृष्टिकोण next और enumerate उपयोग करने के लिए है

यदि आप इससे बचना चाहते हैं, तो आप या तो अपवाद पकड़ सकते हैं या next को None जैसे डिफ़ॉल्ट मान पास कर सकते हैं:

>>> next((i for i,d in enumerate(lod) if 3 in d), None) 
>>> 

@drewk द्वारा टिप्पणी में बताया गया है, आप एक से अधिक सूचकांक से अधिक मान के मामले में लौटे प्राप्त करना चाहते हैं, तो के रूप में, आप एक सूची समझ का उपयोग कर सकते हैं:

>>> lod = [{1: "a"}, {2: "b"}, {2: "c"}] 
>>> [i for i,d in enumerate(lod) if 2 in d] 
[1, 2] 
+0

कहता है कि यह अस्तित्व में है, अगर कुछ है तो मैं अपनी अनुक्रमणिका/पहली व्यक्ति की अनुक्रमणिका कैसे प्राप्त कर सकता हूं? @DSM – user2057574

+0

इस तरह: '[i i i, d in enumerate (lod) यदि d में 2] 'या' [(i, d) i, d में enumerate (lod) यदि 2 में d] यदि आप चाहते हैं पूरा निर्देश बाहर ... ' – dawg

2

उपयोग any एक जनरेटर के साथ समारोह:

>>> d = [{1: "a"}, {2: "b"}] 
>>> any(1 in x for x in d) 
True 

any फ़ंक्शन True, अगर iterable में कम से कम एक तत्व से पारित कर दिया करने के लिए इसे True है। लेकिन आपको वास्तव में विचार करने की आवश्यकता है, आप एक dict में सभी key: value जोड़े क्यों नहीं कर रहे हैं?

1
parsedData=[] 
dataRow={} 
if not any(d['url'] == dataRow['url'] for d in self.parsedData): 
     self.parsedData.append(dataRow) 
0

एकल dictoray में देखने के लिए हम कीवर्ड 'में' का उपयोग करें:

key in dic_instance 

शब्दकोश की सूची में जाँच करने के लिए, शब्दकोश सूची और उपयोग 'कोई भी' समारोह के माध्यम से पुनरावृति है, तो कुंजी किसी भी में पाया है, तो शब्दकोश का, यह सूची को फिर से शुरू नहीं करेगा।

dic_list = [{1: "a"}, {2: "b"}] 
any(2 in d for d in dic_list) 
True 
any(4 in d for d in dic_list) 
False 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^