অভিধানে একটি কী এর নাম পরিবর্তন করুন


উত্তর:


715

সহজেই 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

59
কীটি বিদ্যমান না থাকলে এটি কোনওভাবেই একটি কীরার উত্থাপন করবে তবে আপনি তা dict[new_value] = dict.pop(old_value, some_default_value)এড়াতে ব্যবহার করতে পারবেন
টোবিয়াস কেইনজলার

2
দ্রষ্টব্য যে এটি সিপিথন 3.6+ / পাইপ এবং পাইথন 3.7+ এর কীটির অবস্থানকেও প্রভাবিত করবে। এটি সাধারণভাবে অবস্থানের অবস্থান old_keyথেকে পৃথক হবে new_key
نورোক 2

63

আপনি যদি সমস্ত কীগুলি পরিবর্তন করতে চান:

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}

যদি আপনি একক কী পরিবর্তন করতে চান: উপরের যে কোনও পরামর্শের সাথে আপনি যেতে পারেন।


3
এটি একটি বিদ্যমান অভিধান আপডেট করার পরিবর্তে একটি নতুন অভিধান তৈরি করে - যা গুরুত্বপূর্ণ নাও হতে পারে, তবে যা বলা হয়েছিল তা নয়।
মার্টিনো

15
অভিধান বোঝার সাথে একই উত্তর:{ d1[key] : value for key, value in d.items() }
মরউভেন


26

পাইথন ২.7 এবং উচ্চতর ক্ষেত্রে আপনি অভিধানের বোধগম্যতা ব্যবহার করতে পারেন: ডিকট্রিডার ব্যবহার করে সিএসভি পড়ার সময় এটির একটি উদাহরণ আমি পেয়েছি। ব্যবহারকারীর সমস্ত কলামের নাম ':' দিয়ে প্রত্যাহার করা হয়েছিল

ori_dict = {'key1:' : 1, 'key2:' : 2, 'key3:' : 3}

কীগুলিতে ':' অনুসরণ করে পরিত্রাণ পেতে:

corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }


"এ্যাট্রিবিউটআরার: 'ডিক' অবজেক্টের '
রিপ্লেসমেন্ট

2
ব্যবহারকারী 1318125, আমি কপি পেস্ট চেষ্টা করার পরামর্শ দেব। পাইথন কনসোলে এটি আমার জন্য কাজ করে (কীটি হিসাবে ব্যবহৃত স্ট্রিংয়ের উপরে .repus কার্যকর করা হচ্ছে)
উত্তর.মিস্টার

7

যেহেতু কীগুলি হ'ল অভিধানগুলি মূল্যবোধগুলির জন্য ব্যবহার করে তাই আপনি এগুলি সত্যিই পরিবর্তন করতে পারবেন না। আপনি যে নিকটতম জিনিসটি করতে পারেন তা হ'ল পুরানো কীটির সাথে সম্পর্কিত মানটি সংরক্ষণ করা, মুছুন, তারপরে প্রতিস্থাপন কী এবং সংরক্ষিত মান সহ একটি নতুন এন্ট্রি যুক্ত করুন। অন্যান্য উত্তরগুলির বেশ কয়েকটি বিভিন্নভাবে এটি সম্পাদন করা যেতে পারে rate


5

আপনার যদি একটি জটিল ডিক থাকে তবে এর অর্থ হ'ল ডকের ভিতরে কোনও ডিক বা তালিকা রয়েছে:

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'}}

4

এটি করার সরাসরি কোনও উপায় নয়, তবে আপনি মুছে ফেলতে পারেন-পরে-নিয়োগ করুন

d = {1:2,3:4}

d[newKey] = d[1]
del d[1]

বা ভর কী পরিবর্তন করে:

d = dict((changeKey(k), v) for k, v in d.items())

2
d = { changeKey(k): v for k, v in d.items()}
এরিক

4

অভিধানে সমস্ত কী রূপান্তর করতে

মনে করুন এটি আপনার অভিধান:

>>> 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'}

3
d = {1:2,3:4}

ধরা যাক আমরা তালিকার উপাদানগুলির পি = ['a', 'বি'] তে কীগুলি পরিবর্তন করতে চাই। নিম্নলিখিত কোডটি করবে:

d=dict(zip(p,list(d.values()))) 

এবং আমরা পেতে

{'a': 2, 'b': 4}

0

আপনি একই মানটি অনেক কীগুলির সাথে সংযুক্ত করতে পারেন, বা কেবল একটি কী মুছে ফেলতে পারেন এবং একই মানটির সাথে একটি নতুন কী পুনরায় যুক্ত করতে পারেন।

উদাহরণস্বরূপ, আপনার কী-> মানগুলি থাকলে:

red->1
blue->2
green->4

আপনি যুক্ত purple->2বা অপসারণ red->1এবং যোগ করতে পারবেন না এমন কোনও কারণ নেইorange->1


0

একবারে সমস্ত কী পরিবর্তন করার ক্ষেত্রে। এখানে আমি চাবি স্টেমিং করছি।

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

-3

আমি এই সঠিক উত্তরটি দেখিনি:

dict['key'] = value

এমনকি বৈশিষ্ট্যগুলিকে আপত্তি জানাতেও এটি করতে পারেন। এটি করে তাদের অভিধানে পরিণত করুন:

dict = vars(obj)

তারপরে আপনি কোনও অভিধানের মতো অবজেক্টের বৈশিষ্ট্যগুলি পরিচালনা করতে পারেন:

dict['attribute'] = value

1
এটি কীভাবে প্রশ্নের সাথে সম্পর্কিত তা আমি দেখছি না; আপনি দয়া করে বিস্তারিত বলতে পারেন?
অ্যাপ্রিয়েটর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.