2015-08-20 6 views
5

मैं पाइथन में किसी शब्दकोश के कुंजी-मूल्य जोड़े के क्रम को कैसे उलटूं?एक शब्दकोश (पायथन) में कुंजी-मूल्य जोड़े के क्रम को उलटाना

{"c":3, "b":2, "a":1} 

वहाँ एक समारोह है कि मैं इस बारे में नहीं सुना है यह कर सकते हैं है:

{"a":1, "b":2, "c":3} 

मैं इसे उल्टा करने के लिए इतना है कि यह रिटर्न चाहते हैं: उदाहरण के लिए, मैं इस शब्दकोश है? कोड की कुछ पंक्तियां भी ठीक है।

+2

पायथन शब्दकोशों का आदेश नहीं दिया जाता है। – Delgan

उत्तर

7

शब्दकोश में कोई ऑर्डर नहीं है, इसलिए आपके कुंजी/मूल्य जोड़े को किसी भी प्रारूप में आदेश नहीं दिया गया है।

आप चाबियों का आदेश सुरक्षित रखना चाहते हैं, तो आप collections.OrderedDict शुरू से ही बजाय सामान्य शब्दकोश का उपयोग करने का उपयोग करना चाहिए,, उदाहरण -

>>> from collections import OrderedDict 
>>> d = OrderedDict([('a',1),('b',2),('c',3)]) 
>>> d 
OrderedDict([('a', 1), ('b', 2), ('c', 3)]) 

OrderedDict जिसमें कुंजी में प्रवेश कर रहे थे क्रम की रक्षा करेगा शब्दकोष। उपरोक्त मामले में, यह जिस क्रम में कुंजी सूची में मौजूद हो सकता है - [('a',1),('b',2),('c',3)] -

तो फिर तुम चाबियों का उलट क्रम reversed(d) का उपयोग कर, प्राप्त कर सकते हैं उदाहरण -

>>> dreversed = OrderedDict() 
>>> for k in reversed(d): 
...  dreversed[k] = d[k] 
... 
>>> dreversed 
OrderedDict([('c', 3), ('b', 2), ('a', 1)]) 
+0

हां सही, यह बिंदु नहीं है, इसका क्रमबद्ध सॉर्ट होगा, ओपी 'सॉर्ट' नहीं करना चाहता, ओपी रिवर्स ऑर्डर में चाबियाँ चाहता है। –

+0

हां :)। मेरा समाधान बस इस उदाहरण (भाग्य) के लिए हल करें। जानकारी के लिए धन्यवाद। :) – itzMEonTV

0

एक शब्दकोश HashMap का उपयोग करता है कुंजी और संबंधित मानों को स्टोर करने के लिए। पर

देखो: Is a Python dictionary an example of a hash table?

हैश से संबंधित कुछ भी कोई आदेश नहीं है।

आप इस के साथ यह कर सकते हैं:

d = {} 
d['a']=1 
d['b']=2 
d['c']=3 
d['d']=4 
print d 
for k,v in sorted(d.items(),reverse = True): 
    print k,v 

d.items() tuples की सूची लौटाता है: [('a', 1), ('c', 3), ('b', 2), ('d', 4)] और k,v पाश में पुनरावृत्ति के लिए tuples में मानों हो जाता है। sorted() एक क्रमबद्ध सूची देता है, जबकि आप use d.items().sort() नहीं कर सकते जो वापस नहीं आता है, लेकिन इसके बजाय d.items() को ओवरराइट करने का प्रयास करता है।

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