অভিধানে টিপলগুলির তালিকা


111

এখানে আমি বর্তমানে পাইথনের অভিধানগুলিতে টিপলগুলির একটি তালিকা রূপান্তর করছি:

l = [('a',1),('b',2)]
h = {}
[h.update({k:v}) for k,v in l]
> [None, None]
h
> {'a': 1, 'b': 2}

একটি ভাল উপায় আছে কি? দেখে মনে হচ্ছে এটি করার জন্য ওয়ান-লাইনার থাকা উচিত।

উত্তর:


177

dict()সরাসরি টিপলগুলির তালিকায় সরাসরি কল করুন

>>> my_list = [('a', 1), ('b', 2)]
>>> dict(my_list)
{'a': 1, 'b': 2}

1
ডার্প, আমি জানতাম এটি করার একটি সহজ উপায় থাকবে ... রুবি থেকে এখানে এসে কাজ করার পাইথন পদ্ধতি শিখার চেষ্টা করছে। ধন্যবাদ!
সারা ভেসেলস

5
@ চন্দ্রাশ এটি পাইথন 3 এ কাজ করে , সুতরাং কোনও আপডেটের প্রয়োজন নেই।
সোভেন মারনাচ

@ স্পেনমার্নাচ, আপনি পিআই 3.5 টার্মিনালে উপরে লিখেছেন একই কমান্ডের আমার আউটপুট এখানে। ট্রেসব্যাক (সর্বশেষতম কল শেষ): "মডেল> ডিক (মাই_লিস্ট) -তে লাইন 1," "আইপিথন-ইনপুট-313-7bb3559567ff>" ফাইলটি টাইপ করুন: 'অভিধান' অবজেক্টটি কলযোগ্য নয়
সি কেএম

4
@ চন্দ্রেশ এর পাইথন 3 এর সাথে কোনও সম্পর্ক নেই - এটি কারণ আপনার একটি পরিবর্তনশীল নামে পরিচিত কারণ dictএকই নামের পাইথনটি বিল্ট-ইন ছায়া করে। আপনার কখনই এটি করা উচিত নয়।
সোভেন মারনাচ

পছন্দ করুন ধন্যবাদ। এটা কাজ করেছে. আসলে, আমি ওয়েব থেকে কিছু কোড পেয়েছি এবং এটি চালানোর চেষ্টা করেছি। দেখে মনে হচ্ছে যে লেখকটি dictত্রুটিযুক্ত নাম হিসাবে ব্যবহার করেছেন সেখান থেকে আমি ত্রুটি পেয়েছি। আবার ধন্যবাদ.
সিকেএম

23

dictকন্সট্রাকটর ইনপুট আপনি এটা (কী / মান tuples) থাকতে ঠিক হিসাবে গ্রহণ করে।

>>> l = [('a',1),('b',2)]
>>> d = dict(l)
>>> d
{'a': 1, 'b': 2}

ডকুমেন্টেশন থেকে :

উদাহরণস্বরূপ, এই সবগুলি একটি অভিধান return "এক": 1, "দুটি": 2 equal এর সমান:

dict(one=1, two=2)
dict({'one': 1, 'two': 2})
dict(zip(('one', 'two'), (1, 2)))
dict([['two', 2], ['one', 1]])


7

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

mylist = [(a,1),(a,2),(b,3)]    
result = {}
for i in mylist:  
   result.setdefault(i[0],[]).append(i[1])
print(result)
>>> result = {a:[1,2], b:[3]}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.