मैं एक पायथन शब्दकोश में एक प्रविष्टि की कुंजी को बदलना चाहता हूं।शब्दकोश में एक कुंजी का नाम बदलें
क्या ऐसा करने का कोई सीधा तरीका है?
मैं एक पायथन शब्दकोश में एक प्रविष्टि की कुंजी को बदलना चाहता हूं।शब्दकोश में एक कुंजी का नाम बदलें
क्या ऐसा करने का कोई सीधा तरीका है?
आसानी 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
यह अगर कुंजी मौजूदा नहीं है एक KeyError किसी भी तरह से बढ़ा देंगे , लेकिन आप –
आप एक ही मान को कई चाबियों से जोड़ सकते हैं, या केवल एक कुंजी हटा सकते हैं और उसी मान के साथ एक नई कुंजी फिर से जोड़ सकते हैं।
उदाहरण के लिए, आप कुंजी> मान है, तो:
red->1
blue->2
green->4
ऐसा कोई कारण नहीं आप purple->2
नहीं जोड़ सकते हैं या red->1
हटाने और orange->1
यह करने के लिए कोई सीधा रास्ता में जोड़ सकते हैं, लेकिन आप हटाना-से-असाइन
d = {1:2,3:4}
d[newKey] = d[1]
del d[1]
या बड़े पैमाने पर महत्वपूर्ण परिवर्तन कर सकते हैं:
0,123,d = dict((changeKey(k), v) for k, v in d.items())
pop'n'fresh
>>>a = {1:2, 3:4}
>>>a[5] = a.pop(1)
>>>a
{3: 4, 5: 2}
>>>
आप सभी कुंजियों को बदलना चाहते हैं:
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}
अगर आप एकल कुंजी बदलना चाहते हैं: आप उपरोक्त में से किसी के साथ जा सकते सुझाव।
से बचने के लिए 'dict [new_value] = dict.pop (old_value, some_default_value) 'का उपयोग कर सकते हैं, यह मौजूदा अपडेट को अपडेट करने के बजाय एक नया शब्दकोश बनाता है - जो महत्वपूर्ण नहीं हो सकता है, लेकिन यह नहीं पूछा गया था । – martineau
एक शब्दकोश समझ के साथ एक ही जवाब: '{d1 [key]: कुंजी के लिए मान, d.items()} – Morwenn
चूंकि कुंजी जो शब्द देखने के लिए उपयोग करते हैं, आप वास्तव में उन्हें बदल नहीं सकते हैं। सबसे पुरानी चीज जो आप कर सकते हैं वह पुरानी कुंजी से जुड़े मूल्य को सहेजना है, इसे हटाएं, फिर प्रतिस्थापन कुंजी और सहेजे गए मान के साथ एक नई प्रविष्टि जोड़ें। कई अन्य उत्तरों से यह पूरा किया जा सकता है कि विभिन्न तरीकों को चित्रित किया जा सकता है।
dict['key'] = value
तुम भी गुण वस्तु को यह कर सकते हैं:
मैं इस सटीक जवाब नहीं देखा है। ऐसा करने से एक शब्दकोश में उन्हें बनाओ:
dict = vars(obj)
तो फिर तुम वस्तु में हेरफेर कर सकते हैं आप की तरह विशेषताओं का होगा एक शब्दकोश:
dict['attribute'] = value
में मान मैं नहीं देख रहा हूं कि यह प्रश्न से कैसे संबंधित है; क्या आप विस्तार से बता सकते हैं? – apraetor
अजगर 2.7 और उसके बाद वाले समझ शब्दकोश का उपयोग कर सकते हैं: यह एक उदाहरण है जो मुझे एक DictReader का उपयोग कर एक CSV पढ़ने के दौरान सामना करना पड़ा।कुंजी में '::'
{'key1:' :1, 'key2:' : 2, 'key3:' : 3}
अनुगामी से छुटकारा पाने के उपयोगकर्ता के साथ सभी कॉलम नामों प्रत्यय था '':
corrected_dict = { x.replace(':', ''): ori_dict[x] for x in ori_dict.keys() }
"विशेषताइरर: 'dict' ऑब्जेक्ट में कोई विशेषता नहीं है ' – user1318135
उपयोगकर्ता1318125, मैं कॉपी कॉपी पेस्ट का सुझाव दूंगा। यह पाइथन कंसोल में मेरे लिए काम करता है (.replace को स्ट्रिंग पर निष्पादित किया जा रहा है जिसे कुंजी के रूप में उपयोग किया जाता है) –
आप एक जटिल dict है, इसका मतलब है कि dict के भीतर एक dict या list है:
myDict = {1:"one",2:{3:"three",4:"four"}}
myDict[2][5] = myDict[2].pop(4)
print myDict
Output
{1: 'one', 2: {3: 'three', 5: 'four'}}
सभी कुंजी को एक बार में बदलने के मामले में। यहां मैं चाबियाँ लगा रहा हूं।
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
** भी देखें **: http://stackoverflow.com/questions/30720673/renaming-the-keys-of-a-dictionary – dreftymac