मैं निम्नलिखित तीन तार है (वे स्वतंत्र रूप से मौजूद हैं, लेकिन सुविधा के लिए एक साथ यहाँ प्रदर्शित किया गया):क्या मैं हर बार एक बार फिर से रहने के लिए एक नियम के आदेश पर भरोसा कर सकता हूं?
from mx2.x.org (mx2.x.org. [198.186.238.144])
by mx.google.com with ESMTPS id g34si6312040qgg.122.2015.04.22.14.49.15
(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
Wed, 22 Apr 2015 14:49:16 -0700 (PDT)
from HQPAMAIL08.x.org (10.64.17.33) by HQPAMAIL13.x.x.org
(10.34.25.11) with Microsoft SMTP Server (TLS) id 14.2.347.0; Wed, 22 Apr
2015 17:49:13 -0400
from HQPAMAIL13.x.org ([fe80::7844:1f34:e8b2:e526]) by
HQPAMAIL08.iadb.org ([fe80::20b5:b1cb:9c01:aa86%18]) with mapi id
14.02.0387.000; Wed, 22 Apr 2015 17:49:12 -0400
मैं कुछ उलट के आधार पर मूल्यों के साथ (नीचे शीर्ष पर) एक dict पॉप्युलेट करने के लिए के आदेश देख रहा हूँ तार विशेष रूप से, प्रत्येक स्ट्रिंग के लिए, मैं आईपी पते को एक प्रकार के सूचकांक के रूप में निकालने जा रहा हूं, और उसके बाद पूर्ण स्ट्रिंग मान के रूप में। फिर
IPs =[]
fullStrings =[]
for string in strings:
IPs.append[$theIpAddressFoundInTheString]
fullstrings.append[$theWholeString]
निम्नलिखित दो सूचियों में जिसके परिणामस्वरूप (,:
यह देखते हुए कि क्रम महत्वपूर्ण है, मैं सूचियों के साथ जाने का फैसला किया है, और शुरू में कुछ इस तरह से किया था (स्यूडोकोड, पाठ के ऊपर समूह के साथ) सिर्फ एक उदाहरण):
IPs ['198.186.238.144', '10.64.17.33', 'fe80::7844:1f34:e8b2:e526']
fullstrings ['from mx2.x.org (mx2.x.org. [198.186.238.144])
by mx.google.com with ESMTPS id g34si6312040qgg.122.2015.04.22.14.49.15
(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
Wed, 22 Apr 2015 14:49:16 -0700 (PDT)', 'from HQPAMAIL08.x.org (10.64.17.33) by HQPAMAIL13.x.x.org
(10.34.25.11) with Microsoft SMTP Server (TLS) id 14.2.347.0; Wed, 22 Apr
2015 17:49:13 -0400', 'from HQPAMAIL13.x.org ([fe80::7844:1f34:e8b2:e526]) by
HQPAMAIL08.x.org ([fe80::20b5:b1cb:9c01:aa86%18]) with mapi id
14.02.0387.000; Wed, 22 Apr 2015 17:49:12 -0400']
यह ठीक ऊपर काम किया है एक बिंदु तक, लेकिन अब के रूप में मैं एक dict (हार्डकोडेड सूचकांक में इन सूचियों में मूल्यों के साथ पॉप्युलेट), (फिर अन्य सूचियों में मूल्यों के खिलाफ की तुलना शुरू हर पर dcoded सूचकांक) आदि, न केवल डीबगिंग दर्द बन जाता है, कोड अस्थिर हो जाता है।
मैं एक dict का उपयोग करके फिर से लिखना शुरू कर रहा हूं (एक ऐसा स्थान लौटा रहा हूं जहां आईपी पते कुंजी हैं और पूर्ण तार मूल्य हैं)।
for k,v in myDictOfIpsAndStrings:
anotherDict[$someHardcodedText] = k
anotherDict[$otherHardcodedText] = v
यहाँ मेरी चिंता का विषय है: मुझे यकीन है कि dict, किसी भी समय इस पर दोहराया है, हमेशा जिस क्रम में dict बनाया गया था में किया जाएगा हो सकता है तो मैं जैसे कार्य करेगा? यदि नहीं, तो सूचियों पर वापस लौटने का मेरा एकमात्र विकल्प है (और थकाऊ और भंगुर लंबाई तुलना, ऐसा करने में अंतर्निहित असाइनमेंट आदि)?
मुझे पता है कि एक निर्देश है, इसकी प्रकृति, बिना छेड़छाड़ की। और मुझे sorted
फ़ंक्शन का पता है, लेकिन मैं किसी भी अवरोही/आरोही क्रम आदि द्वारा उनकी चाबियाँ क्रमबद्ध नहीं करना चाहता हूं बल्कि यह आदेश (किसी भी तरह) जिस क्रम में बनाया गया था उसे बनाए रखने के बारे में है।
का प्रयोग करें एक 'collections.OrderedDict' चाहते हैं! – Ryan
आपका प्रश्न अस्पष्ट है। आप किस आदेश को संरक्षित करने की उम्मीद करते हैं? जिस क्रम में आपने तत्व डाले थे? या जब आप एक से अधिक बार फिर से शुरू करते हैं तो आप जिस क्रम में बदलाव नहीं करते हैं? सम्मिलित क्रम का कोई संरक्षण नहीं है, लेकिन एक बार आपके पास शब्दकोश होने के बाद, ऑर्डर तब तक स्थिर रहता है जब तक आप अधिक कुंजी (या कुंजी हटाएं) डालें। –
@minitech धन्यवाद। प्रलेखन https://docs.python.org/2/library/collections.html#collections.OrderedDict में "संस्करण 2.7 में नया" पंक्ति है, लेकिन इसे विलुप्त होने के बीच में दफनाया गया है। क्या मुझे इसे पढ़ना चाहिए क्योंकि ऑर्डर्ड डिक्ट 2.7 में नया है, या केवल popitem() विधि नई है? – Pyderman