কী-মান টিপলগুলির তালিকাটি অভিধানে রূপান্তর করবেন কীভাবে?


125

আমার কাছে এমন একটি তালিকা রয়েছে যা দেখে মনে হচ্ছে:

[('A', 1), ('B', 2), ('C', 3)]

আমি এটিকে এমন একটি অভিধানে পরিণত করতে চাই যা দেখতে লাগে:

{'A': 1, 'B': 2, 'C': 3}

এটি সম্পর্কে সবচেয়ে ভাল উপায় কি?

সম্পাদনা: আমার তালিকার তালিকাটি আসলে আরও বেশি পছন্দ:

[(A, 12937012397), (BERA, 2034927830), (CE, 2349057340)]

1
সত্ত্বা যারা কোন ধরনের A, B(অথবা BERA) এবং C(অথবা CE) সত্যিই আছেন? ধন্যবাদ
খাওয়া

আমি বাজি রাখতে ইচ্ছুক যে নীচের কার্যকারী উদাহরণগুলির সাথে উত্পন্ন ত্রুটিগুলি টিউপসগুলির একটি তালিকা না থাকার সাথে সম্পর্কিত, তবে একটি অত্যন্ত দীর্ঘ তালিকা যা তিনি 2-টিউপলগুলিতে বিভক্ত হতে চান।
gddc

উত্তর:


90

এটি আমাকে তালিকাটি বিভক্ত করার এবং জিপ করার চেষ্টা করার মতো একই ত্রুটি দেয়। মানমূল: অভিধান আপডেট ক্রম উপাদান # 0 এর দৈর্ঘ্য 1916; 2 প্রয়োজন হয়

এটি আপনার আসল প্রশ্ন।

উত্তরটি হ'ল আপনার তালিকার উপাদানগুলি আপনি কী ভাবেন সেগুলি নয়। আপনি যদি টাইপ করেন তবে myList[0]দেখতে পাবেন যে আপনার তালিকার প্রথম উপাদানটি দ্বি-দ্বিখণ্ডিত নয়, উদাহরণস্বরূপ ('A', 1), বরং 1916 দৈর্ঘ্যের পুনরাবৃত্তিযোগ্য।

আপনার আসল প্রশ্নে ( ) আপনি যে ফর্মটি লিখেছেন সেগুলি একবারে আপনার কাছে আসলেmyList = [('A',1),('B',2),...] আপনার যা করা দরকার তা হ'ল dict(myList)


ধন্যবাদ, তালিকাটি কীভাবে এলো তা আমি জানি না তবে এটি স্ক্র্যাচ থেকে পুনরায় কাজ করার পরে, আমি এটি ঠিক করতে সক্ষম হয়েছি।
ফ্রেড উইলসন

1
@ ডিজে_এসটিফি_ কে: (প্রসঙ্গটি এই প্রশ্নের সাথে সম্পর্কিত নয় বলে ধরে নিচ্ছেন) সাধারণভাবে, যদি এটি অতিরিক্ত প্রয়োজন হয় না বা আপনার প্রোগ্রামকে ধীর করে না দেয় তবে আপনি যে বিমূর্ত ডাটা স্ট্রাকচারকে স্পষ্টভাবে তৈরি করছেন তাতে সহায়ক সূচক হিসাবে ডিক্টস তৈরি করা পুরোপুরি ঠিক। "ভাল অনুশীলন" ধারণাটি সম্পূর্ণ প্রাসঙ্গিক-নির্ভর; কীগুলির জন্য আপনার ও (1) দেখার সময় দরকার? এছাড়াও আপনি "তালিকাগুলি অভিধানগুলিতে রূপান্তর করতে পারবেন না"; এটি সম্পূর্ণরূপে শব্দার্থবিজ্ঞানের উপর নির্ভর করে। যেমন [(1,2), (1,3)]-> {1:3}আপনার কীগুলি ক্লোবার করে এবং তথ্য হারাতে পারে! একটি ডিকটি ও (1) সন্নিবেশ / মোছার সময়ের সাথে এক-থেকে-সম্পর্কিত সম্পর্ক। তালিকা একটি তালিকা।
নিনজাগেকো

162
>>> dict([('A', 1), ('B', 2), ('C', 3)])
{'A': 1, 'C': 3, 'B': 2}

5
এছাড়াও অন্য উত্তর যে একই প্রস্তাব দেওয়া মন্তব্য করেছেন: এই ডুপ্লিকেট tuple 'কী' যেমন থাকার কাভার করে না l=[('A',1), ('B',2), ('C',3), ('A', 2)]থাকার পরিণাম ডেকে আনবে 'A': 1যা কাঙ্ক্ষিত ফলাফল নাও হতে পারে।
সাহসী

32

আপনি কি এই চেষ্টা করেছেন?

>>> l=[('A',1), ('B',2), ('C',3)]
>>> d=dict(l)
>>> d
{'A': 1, 'C': 3, 'B': 2}

মানমূল: অভিধান আপডেট ক্রম উপাদান # 0 এর দৈর্ঘ্য 1916; 2 প্রয়োজন
ফ্রেড উইলসন

এটি আমার টার্মিনাল থেকে সোজা কাটা ছিল, সুতরাং এটি কাজ করা উচিত। এই ত্রুটিটি পেতে আপনি ঠিক কী করতে পারেন তা আপনি প্রদর্শন করতে পারেন?
বেহুদা

@ ফ্রেড, আপনার অবশ্যই কিছু ভুল টাইপ করা উচিত, এই উত্তরটি ভাল।
মার্টিনো

@ ফ্রেডউইলসন এমনই একটি ত্রুটি যা আপনি সাধারণত যখন আপনি কিছু চেষ্টা করেন সাধারণত পানdict([string1, string2, string3, string4])
chacham15

2
এই ডুপ্লিকেট tuple 'কী' যেমন থাকার কাভার করে না: l=[('A',1), ('B',2), ('C',3), ('A', 2)]থাকার পরিণাম ডেকে আনবে 'A': 1যা কাঙ্ক্ষিত ফলাফল নাও হতে পারে।
সাহসী

10

এখানে সদৃশ টিপল "কীগুলি" পরিচালনা করার একটি উপায়:

# An example
l = [('A', 1), ('B', 2), ('C', 3), ('A', 5), ('D', 0), ('D', 9)]

# A solution
d = dict()
[d [t [0]].append(t [1]) if t [0] in list(d.keys()) 
 else d.update({t [0]: [t [1]]}) for t in l]
d

OUTPUT: {'A': [1, 5], 'B': [2], 'C': [3], 'D': [0, 9]}

অসাধারণ! আমাকে সাহায্য করেছেন।
অপ্রত্যাশিত

দুর্দান্ত !, প্রচুর সাহায্য করেছেন
Athar

2

অভিধান বোধগম্য ব্যবহারের আরেকটি উপায়,

>>> t = [('A', 1), ('B', 2), ('C', 3)]
>>> d = { i:j for i,j in t }
>>> d
{'A': 1, 'B': 2, 'C': 3}

2

যদি টিপলের কোনও কী পুনরাবৃত্তি না থাকে তবে এটি সহজ।

tup = [("A",0),("B",3),("C",5)]
dic = dict(tup)
print(dic)

যদি টিপলটির মূল পুনরাবৃত্তি থাকে।

tup = [("A",0),("B",3),("C",5),("A",9),("B",4)]
dic = {}
for i, j in tup:
    dic.setdefault(i,[]).append(j)
print(dic)

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