क्या OrderedDict को महत्वपूर्ण स्थान मिल सकता है?

index() के list की तरह है

test = ['a', 'b', 'c', 'd', 'e']
test.index('b') # return 1
2
RenHao_Xiao 4 अप्रैल 2018, 07:36

2 जवाब

आप इसे दो तरह से लिख सकते हैं:

  • list(x).index('b')
  • next(i for i, k in enumerate(x) if k=='b')

पहला वाला छोटे डिक्ट्स के लिए थोड़ा तेज होगा, लेकिन बहुत धीमा होगा, और बड़े लोगों के लिए बहुत सारी जगह बर्बाद करेगा। (बेशक अधिकांश समय, OrderedDicts बहुत छोटे होते हैं।)

दोनों संस्करण किसी भी चलने योग्य के लिए काम करेंगे; यहाँ OrderedDict के बारे में कुछ खास नहीं है।

1
abarnert 4 अप्रैल 2018, 04:42

हर बार जब आप पद की खोज कर रहे हों तो स्वीकृत उत्तर list(x).index('b') O(N) होगा।

इसके बजाय, आप एक मैपिंग कुंजी -> स्थिति बना सकते हैं जो मैपिंग बनने के बाद O(1) होगी।

ordered_dict = OrderedDict(a='', b='')

key_to_pos = {k: pos for pos, k in enumerate(ordered_dict)}
assert key_to_pos['b'] == 1
0
Conchylicultor 25 मार्च 2020, 00:21