यह अजगर 2 और 3
के बीच तोड़ने परिवर्तन अजगर 2 में से एक है:
>>> help(dict.keys)
keys(...)
D.keys() -> list of D's keys
अजगर 3 में:
>>> help(dict.keys)
keys(...)
D.keys() -> a set-like object providing a view on D's keys
व्यवहार में यह परिवर्तन एक बहुत बनाता है अर्थात् एक ताना अर्थात् अनियंत्रित है और इसकी चाबियाँ अद्वितीय हैं - बस एक सेट की तरह।
इस परिवर्तन का मतलब है कि हर बार जब आप किसी भी प्रकार की सेट तुलना करना चाहते हैं तो आपको कुंजी की एक नई सूची बनाना नहीं है।
2 में एक ही व्यवहार और 3
हो रही अजगर 3 के लिए संक्रमण में मदद करने के लिए, पायथन 2.7 एक और dict विधि, viewkeys
है।viewkeys
विधि पायथन 3 के dict.keys
विधि के समान है:
>>> d
{'d': None, 'a': None, 'c': None, 'b': None}
>>> list(d.keys())
['d', 'a', 'c', 'b']
या बस के लिए dict पारित:
>>> d
{'a': None, 'c': None, 'b': None, 'd': None}
>>> for k in d.viewkeys(): print k
...
a
c
b
d
>>> d.viewkeys() & set('abc')
set(['a', 'c', 'b'])
अजगर 3 में, पुराने व्यवहार के सबसे करीब अनुरूप dict.keys()
list
को पारित करने के लिए है list
, के बाद से एक dict वैसे भी अपनी चाबियाँ पर पुनरावृति जाएगा:
>>> list(d)
['d', 'a', 'c', 'b']
आप करोड़ सकता है 2 और 3 से अधिक सार व्यवहार करने के लिए एक उपयोगिता कार्यों eate:
if hasattr(dict, 'viewkeys'): # Python 2.7
def keys(d):
return d.viewkeys()
else: # Python 3
def keys(d):
return d.keys()
और सूची प्रपत्र प्राप्त करने के लिए list
करने के लिए एक dict गुजरती हैं, और दोनों 2 और 3 में, आप एक ही उत्पादन मिल जाएगा:
>>> d
{'b': None, 'a': None, 'c': None, 'd': None}
>>> keys(d)
dict_keys(['b', 'a', 'c', 'd'])
>>> list(d)
['b', 'a', 'c', 'd']
के बाद से कोई भी नहीं अभी तक आधिकारिक दस्तावेज जुड़ा हुआ है, मैं यह करूँगा: [** शब्दकोश दृश्य वस्तु **] (http: //docs.python। org/py3k/पुस्तकालय/stdtypes.html) # शब्दकोश-दृश्य-वस्तुओं। –
कृपया ध्यान दें कि शब्दकोशों, अव्यवस्थित हैं ताकि b.keys() [0] आम तौर पर नहीं करने के लिए एक बहुत ही उपयोगी बात है। –