क्या कोई नया नाम नहीं है और पुराने नाम की कुंजी को हटाए बिना किसी कुंजीपटल कुंजी का नाम बदलने का कोई तरीका है; और dict कुंजी/मूल्य के माध्यम से पुनरावृत्त किए बिना?
ऑर्डर्ड डिक्ट के मामले में, उस कुंजी की स्थिति को रखते हुए, वही करें।एक शब्दकोश कुंजी का नाम बदलें
उत्तर
इस तरह newkey!=oldkey
का एक चेक का उपयोग करके आप कर सकते हैं:
if newkey!=oldkey:
dictionary[newkey] = dictionary[oldkey]
del dictionary[oldkey]
एक नियमित dict के लिए, आप उपयोग कर सकते हैं:
mydict[new_key] = mydict.pop(old_key)
एक OrderedDict के लिए, मुझे लगता है कि आप एक पूरी तरह से निर्माण करना होगा एक समझ का उपयोग कर नया।
>>> OrderedDict(zip('123', 'abc'))
OrderedDict([('1', 'a'), ('2', 'b'), ('3', 'c')])
>>> oldkey, newkey = '2', 'potato'
>>> OrderedDict((newkey if k == oldkey else k, v) for k, v in _.viewitems())
OrderedDict([('1', 'a'), ('potato', 'b'), ('3', 'c')])
, कुंजी खुद को संशोधित करने के रूप में इस सवाल पूछने जा रहा है, अव्यावहारिक है क्योंकि dict कुंजी आमतौर पर इस तरह की संख्या, तार या tuples के रूप में अपरिवर्तनीय वस्तुओं रहे है। कुंजी को संशोधित करने का प्रयास करने के बजाय, मान को एक नई कुंजी पर पुन: असाइन करना और पुरानी कुंजी को हटाने का तरीका यह है कि आप पाइथन में "नाम बदलें" कैसे प्राप्त कर सकते हैं।
आप इस OrderedDict recipe
रेमंड Hettinger द्वारा लिखित का उपयोग करें और एक rename
विधि जोड़ने के लिए संशोधित कर सकते हैं, लेकिन यह एक हे (एन) जटिलता में होने जा रहा है:
def rename(self,key,new_key):
ind = self._keys.index(key) #get the index of old key, O(N) operation
self._keys[ind] = new_key #replace old key with new key in self._keys
self[new_key] = self[key] #add the new key, this is added at the end of self._keys
self._keys.pop(-1) #pop the last item in self._keys
उदाहरण:
dic = OrderedDict((("a",1),("b",2),("c",3)))
print dic
dic.rename("a","foo")
dic.rename("b","bar")
dic["d"] = 5
dic.rename("d","spam")
for k,v in dic.items():
print k,v
उत्पादन:
OrderedDict({'a': 1, 'b': 2, 'c': 3})
foo 1
bar 2
c 3
spam 5
एक बहुत अच्छा दृष्टिकोण की तरह दिखता है, लेकिन मैं इसे अपनी स्क्रिप्ट में कैसे जोड़ सकता हूं? – MERose
@MERose अपने मॉड्यूल खोज पथ में कहीं भी पाइथन फ़ाइल जोड़ें और इससे 'ऑर्डर्ड डिक्ट' आयात करें। लेकिन मैं अनुशंसा करता हूं: 'ऑर्डर्ड डिक्ट' से प्राप्त एक वर्ग बनाएं और इसमें 'नाम बदलें' विधि जोड़ें। –
1 लाइन में सबसे अच्छा तरीका:
>>> d = {'test':[0,1,2]}
>>> d['test2'] = d.pop('test')
>>> d
{'test2': [0, 1, 2]}
क्या होगा यदि आपके पास 'd = {('test', 'foo') है: [0,1,2]}'? –
@PetrFedosov, तो आप 'd [('new', 'key')] = d.pop (('test', 'foo')) ' –
यह उत्तर wim के उत्तर के बाद _two__ आया था जो सटीक बताता है चीज, कोई अतिरिक्त जानकारी के साथ। मैं क्या खो रहा हूँ? –
मेरे सामने कुछ लोगों हटा सकते हैं और एक एक लाइनर में एक महत्वपूर्ण बनाने के लिए .pop
चाल का उल्लेख किया।
मैं व्यक्तिगत रूप से अधिक स्पष्ट कार्यान्वयन अधिक पठनीय लगता है:
d = {'a': 1, 'b': 2}
v = d['b']
del d['b']
d['c'] = v
कोड ऊपर रिटर्न {'a': 1, 'c': 2}
- 1. शब्दकोश में एक कुंजी का नाम बदलें
- 2. कुंजी नाम से शब्दकोश से एक कुंजी निकालें
- 3. विदेशी कुंजी नाम कैसे बदलें?
- 4. एनएसएमयूटेबल डिक्शनरी में कुंजी का नाम कैसे बदलें?
- 5. एक सामान्य शब्दकोश कुंजी
- 6. PHP एक सरणी की कुंजी का नाम बदलें
- 7. स्ट्रिंग में प्रत्येक वर्ण को एक शब्दकोश कुंजी में बदलें
- 8. एक शब्दकोश में गणना कुंजी?
- 9. किसी शब्दकोष की कुंजी का नाम बदलना
- 10. एक शब्दकोश वस्तु जो कुंजी
- 11. एक शब्दकोश की कुंजी बदलना
- 12. शब्दकोश कुंजी
- 13. शब्दकोश कुंजी प्रकार
- 14. फ़ाइल नाम का नाम बदलें
- 15. छिपी हुई शब्दकोश कुंजी
- 16. ईएफ कोड में प्राथमिक कुंजी का नाम कैसे बदलें?
- 17. जावास्क्रिप्ट कुंजी में/नाम कुंजी को कैसे बदलें: मूल्य मानचित्र?
- 18. महीने का नाम बदलें
- 19. अगर एक कुंजी एक शब्दकोश में exsists
- 20. जटिल शब्दकोश को क्रमबद्ध करने के लिए JSON.NET का उपयोग करते समय 'कुंजी' और 'मान' का नाम बदलें
- 21. संकल्प शब्दकोश कुंजी या Ansible
- 22. एक एसक्यूएल सर्वर इंस्टेंस का नाम बदलें
- 23. एक पायगम विंडो का नाम कैसे बदलें?
- 24. एक टाइपस्क्रिप्ट फ़ाइल का नाम बदलें
- 25. शब्दकोश में अमान्य कुंजी
- 26. शब्दकोश का अंतर। जोड़ें बनाम शब्दकोश [कुंजी] = मूल्य
- 27. शब्दकोश मूल्य का उपयोग कर शब्दकोश कुंजी प्राप्त करें
- 28. केस संवेदनशील शब्दकोश कुंजी
- 29. शब्दकोश स्ट्रिंग कुंजी
- 30. निकालें कुंजी नया शब्दकोश
वास्तव में क्या आप एक नया नाम करने के लिए अपने मूल्य फिर नियत और पुराने नाम कुंजी को हटाए बिना द्वारा "मतलब है "? जिस तरह से मैं इसे देखता हूं, वह एक कुंजी का नाम बदलने की परिभाषा है, और नीचे दिए गए सभी उत्तरों मान को पुन: असाइन करते हैं और पुराने कुंजी नाम को हटाते हैं। आपने अभी तक एक जवाब स्वीकार नहीं किया है, तो शायद आपने जो कुछ भी खोजा है वह पूरा नहीं किया है? – dbliss