2010-07-27 17 views
5

ठीक है, तो http://docs.python.org/library/urllib.htmlभ्रमित अजगर urlencode आदेश

के अनुसार, "इनकोडिंग स्ट्रिंग में मापदंडों के क्रम अनुक्रम में पैरामीटर tuples के आदेश से मेल खाएगी।"

जब मैं इस कोड चलाने की कोशिश को छोड़कर

: के रूप में

import urllib 
values ={'one':'one', 
     'two':'two', 
     'three':'three', 
     'four':'four', 
     'five':'five', 
     'six':'six', 
     'seven':'seven'} 
data=urllib.urlencode(values) 
print data 

आउटपुट ...

seven=seven&six=six&three=three&two=two&four=four&five=five&one=one 

7,6,3,2,4,5,1?

यह मेरे tuples के आदेश की तरह दिखता नहीं है।

+1

आप tuples के एक दृश्य से गुजर रहा नहीं कर रहे हैं। चूंकि आप tuples का अनुक्रम नहीं पारित कर रहे हैं, आप tuples के अनुक्रम के लिए प्रलेखन उद्धृत क्यों कर रहे हैं? –

उत्तर

20

शब्दकोश मूल रूप से लागू किए जाने के तरीके के कारण अनियंत्रित हैं।

values = [ ('one', 'one'), ('two', 'two') ... ] 
+0

ओह, मैं देखता हूं। मै समझता हुँ। मेरी गलती। –

+3

@Neil: यदि यह सही उत्तर है, तो चेक मार्क पर क्लिक करके इसे स्वीकार करें। –

5

बस में मामला किसी: यदि आप चाहते हैं उन्हें आदेश दिया जा करने के लिए, आप एक के बजाय tuples के (या या सूचियों का एक टपल, tuples के एक टपल, या सूचियों की एक सूची ...) सूची का उपयोग करना चाहिए यहाँ आता है मेरे जैसे एक तरह से urlencode से नियतात्मक परिणाम प्राप्त करने के लिए खोज, मूल्यों एन्कोड करने के लिए वर्णानुक्रम आप इसे इस प्रकार कर सकते हैं:

from urllib.parse import urlencode 
values ={'one':'one', 
     'two':'two', 
     'three':'three', 
     'four':'four', 
     'five':'five', 
     'six':'six', 
     'seven':'seven'} 
sorted_values = sorted(values.items(), key=lambda val: val[0]) 
data=urlencode(values) 
print(data) 
#> 'five=five&four=four&one=one&seven=seven&six=six&three=three&two=two' 
संबंधित मुद्दे