मैं पायथन डिक्शनरी में एक प्रविष्टि की कुंजी बदलना चाहता हूं।
क्या ऐसा करने का एक सीधा तरीका है?
मैं पायथन डिक्शनरी में एक प्रविष्टि की कुंजी बदलना चाहता हूं।
क्या ऐसा करने का एक सीधा तरीका है?
जवाबों:
आसानी से 2 चरणों में किया जाता है:
dictionary[new_key] = dictionary[old_key]
del dictionary[old_key]
या 1 चरण में:
dictionary[new_key] = dictionary.pop(old_key)
जो अपरिभाषित है KeyError
तो उठाएंगे dictionary[old_key]
। ध्यान दें कि यह हटा देगाdictionary[old_key]
।
>>> dictionary = { 1: 'one', 2:'two', 3:'three' }
>>> dictionary['ONE'] = dictionary.pop(1)
>>> dictionary
{2: 'two', 3: 'three', 'ONE': 'one'}
>>> dictionary['ONE'] = dictionary.pop(1)
Traceback (most recent call last):
File "<input>", line 1, in <module>
KeyError: 1
dict[new_value] = dict.pop(old_value, some_default_value)
बचने के लिए उपयोग कर सकते हैं
old_key
से की स्थिति की स्थिति से भिन्न होगी new_key
।
यदि आप सभी कुंजियाँ बदलना चाहते हैं:
d = {'x':1, 'y':2, 'z':3}
d1 = {'x':'a', 'y':'b', 'z':'c'}
In [10]: dict((d1[key], value) for (key, value) in d.items())
Out[10]: {'a': 1, 'b': 2, 'c': 3}
यदि आप एकल कुंजी बदलना चाहते हैं: आप उपरोक्त किसी भी सुझाव के साथ जा सकते हैं।
{ d1[key] : value for key, value in d.items() }
अजगर 2.7 और उच्चतर में, आप शब्दकोश समझ का उपयोग कर सकते हैं: यह एक उदाहरण है जो मैंने एक डिक्ट्रीडर का उपयोग करते हुए सीएसवी को पढ़ने के दौरान किया था। उपयोगकर्ता ने ':' के साथ सभी कॉलम नामों को प्रत्यय दिया था
ori_dict = {'key1:' : 1, 'key2:' : 2, 'key3:' : 3}
कुंजियों में ':' से छुटकारा पाने के लिए:
corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }
चूंकि कुंजियाँ लुकअप मानों के लिए शब्दकोशों का उपयोग करती हैं, आप वास्तव में उन्हें बदल नहीं सकते हैं। निकटतम चीज जो आप कर सकते हैं वह है कि पुरानी कुंजी से जुड़े मूल्य को सहेजना, उसे हटाना, फिर प्रतिस्थापन कुंजी और सहेजे गए मूल्य के साथ एक नई प्रविष्टि जोड़ें। अन्य जवाबों में से कई अलग-अलग तरीकों से यह पूरा करते हैं।
शब्दकोश में सभी कुंजियों को परिवर्तित करने के लिए
मान लीजिए कि यह आपका शब्दकोश है:
>>> sample = {'person-id': '3', 'person-name': 'Bob'}
नमूना शब्दकोश कुंजी में सभी डैश को अंडरस्कोर में बदलने के लिए:
>>> sample = {key.replace('-', '_'): sample.pop(key) for key in sample.keys()}
>>> sample
>>> {'person_id': '3', 'person_name': 'Bob'}
d = {1:2,3:4}
मान लीजिए कि हम सूची तत्वों p = ['a', 'b'] में कुंजियों को बदलना चाहते हैं। निम्नलिखित कोड करेंगे:
d=dict(zip(p,list(d.values())))
और हम प्राप्त करते हैं
{'a': 2, 'b': 4}
आप एक ही मान को कई कुंजियों के साथ जोड़ सकते हैं, या बस एक कुंजी को हटा सकते हैं और उसी मूल्य के साथ एक नई कुंजी जोड़ सकते हैं।
उदाहरण के लिए, यदि आपके पास कुंजियाँ हैं-> मान:
red->1
blue->2
green->4
ऐसा कोई कारण नहीं है जिसे आप जोड़ purple->2
या हटा नहीं सकते हैं red->1
और जोड़ नहीं सकते हैंorange->1
एक ही बार में सभी चाबियों को बदलने के मामले में। यहां मैं चाबियों को तान रहा हूं।
a = {'making' : 1, 'jumping' : 2, 'climbing' : 1, 'running' : 2}
b = {ps.stem(w) : a[w] for w in a.keys()}
print(b)
>>> {'climb': 1, 'jump': 2, 'make': 1, 'run': 2} #output
मैंने इसका सटीक उत्तर नहीं देखा है:
dict['key'] = value
आप ऑब्जेक्ट विशेषताओं पर भी ऐसा कर सकते हैं। ऐसा करके उन्हें एक शब्दकोश में बनाएँ:
dict = vars(obj)
फिर आप ऑब्जेक्ट विशेषताओं में हेरफेर कर सकते हैं जैसे कि आप एक शब्दकोश चाहेंगे:
dict['attribute'] = value