मेरे पास एक dict
है जो पूर्णांक कुंजी लेता है:
एक = {} एक [1] = 100 ए [55] = 101 ए [127] = 102
मैं पूछने पर निकटतम पड़ोसी लेने में सक्षम होना चाहता हूं:
वापस करना चाहिए <क्या ऐसा करने का एक अजगर तरीका है? (मैं सोचता हूं कि यह सभी शब्दों पर पाशन करके किया जा सकता है, लेकिन शायद यह सबसे ज्यादा खूबसूरत समाधान नहीं है?)
डबल-इंडेक्स के साथ एक ही सवाल (पूर्णांक भी):
b [90, 1] = 100, b [90, 55] = 101, बी [90, 127] = 102 बी [70, 1] = 40, बी [70, 45] = 41, बी [70, 107] = 42
मैं b [73, 40] = b [70, 45] = 41
, यानी प्राप्त करने में सक्षम होना चाहूंगा एक 2 डी विमान में निकटतम पड़ोसबोअर।
इस तरह से कुछ:
< Pre> class कस्टम डिक्ट (डिक्ट): def __getitem __ (आत्म, कुंजी): प्रयास करें: वापसी डायरेक्ट .__ getitem __ (मुख्य कुंजी) keyError: closest_key = min (self.keys), key = lambda x: abs () X - key)) वापस दिये गये शब्द .__ getitem __ (स्वयं, निकटतम_की)
या यह:
class कस्टम डिक्ट (dict): def __getitem __ (आत्म, कुंजी ): यदि स्वयं में कुंजी: वापसी dict .__ getitem __ (आत्म, कुंजी) अन्य: closest_key = min (self.keys (), कुंजी = लैम्ब्डा x: abs (x - key)) वापसी dict .__ getitem __ (स्वयं, निकटतम_key) < / Code>
दोनों यह परिणाम देता है:
a = customDict () एक [1] = 100 एक [55] = 101 एक [127] = 102 प्रिंट एक [20] # प्रिंट 100 प्रिंट [58] # प्रिंट 101 प्रिंट [167] # प्रिंट 102 और क्लास CustomDoubleDic T (dict): def __getitem __ (आत्म, कुंजी): यदि स्वयं में कुंजी: वापसी dict .__ getitem __ (आत्म, कुंजी) अन्य: closest_key = min (self.keys), कुंजी = लैम्ब्डा c: (c [0] - कुंजी [0]) ** 2 + (सी [1] - कुंजी [1]) ** 2) वापसी dict .__ getitem __ (स्वयं, निकटतम_की) बी = कस्टमड्यूडिक्ट () बी [90, 1] = 100 बी [90, 55] = 101 बी [90, 127] = 102 बी [70, 1] = 40 बी [70, 45] = 41 बी [70, 107] = 42 प्रिंट बी [73, 40] # प्रिंट 41 प्रिंट [70 , 45] # प्रिंट 41
No comments:
Post a Comment