পাইথন টুপল টু ডিক


149

টিপল জন্য, t = ((1, 'a'),(2, 'b')) dict(t)ফিরে{1: 'a', 2: 'b'}

{'a': 1, 'b': 2}(কি এবং vals অদলবদল করা) ভাল উপায় আছে ?

শেষ পর্যন্ত, আমি 1প্রদত্ত 'a'বা 2প্রদত্ত ফিরে আসতে সক্ষম হতে চাই 'b', সম্ভবত কোনও ডিককে রূপান্তর করা সর্বোত্তম উপায় নয়।

উত্তর:


277

চেষ্টা করুন:

>>> t = ((1, 'a'),(2, 'b'))
>>> dict((y, x) for x, y in t)
{'a': 1, 'b': 2}

8
+1 সুন্দর! আমাকে জিপ দিয়ে চেষ্টা করতে হয়েছিল dict(zip(*zip(*t)[::-1]))। এটি ধীর, কুরুচিপূর্ণ এবং আরও বেশি মেমরি ব্যবহার করছে .. সম্ভবত 3x।
— কেভপি

@ কেভপী পাইথন সম্পর্কে আশ্চর্যজনক বিষয়টি হল যে কীভাবে কীভাবে করবেন তা প্রকাশ করার জন্য একশ উপায় রয়েছে, প্রতিটি পরেরটির মতোই আকর্ষণীয়।
— bjd2385

দুর্দান্ত, যদি আপনার কাছে যা থাকে ত্রিগল হয় আপনি করতে পারেন: dict((x, y) for x, y, z in t)বা dict((x, (y, z)) for x, y, z in t)দ্বিতীয় হিসাবে তৃতীয় এবং তৃতীয় মান পেতে।
— সাহসী

খুব দ্রুত, বিস্তৃত এবং সহজ। নিখুঁত উত্তর.
— gies0r

73

একটি সামান্য সহজ পদ্ধতি:

>>> t = ((1, 'a'),(2, 'b'))
>>> dict(map(reversed, t))
{'a': 1, 'b': 2}

1
কি দ্রুত এটি তোলে?
— maazza

9
মানচিত্র এবং ডিক ফাংশনগুলি সিতে প্রয়োগ করা হয়েছে এবং যেকোন অজগর সংস্করণের তুলনায় অনেক দ্রুত
— জেটেরাস

1
আমি reverseস্পষ্টভাবে বানান থাকার জন্য এটি পছন্দ ।
— ফ্রেরিচ রাবাবে

4
@ মাজাজা: সাধারণভাবে পারফরম্যান্স টেস্টগুলি বোঝায় যে ( mapজিনিসটি ম্যাপ করা হচ্ছে তখন অন্য কোনও অন্তর্নির্মিত ফাংশন (যেমন reversed) হ'ল ( কমপক্ষে সি বাস্তবায়নে) একটি বোধগমনের চেয়ে দ্রুত হয় ; অন্যান্য ক্ষেত্রে, বিপরীতটি সত্য। তবে অনুমানের চেয়ে প্রোফাইল করা আরও ভাল :)
— কার্ল নচেটেল

43

আপনি অজগর ২.7 এ থাকলে আরও সংক্ষিপ্ত:

>>> t = ((1,'a'),(2,'b'))
>>> {y:x for x,y in t}
{'a':1, 'b':2}

9
>>> dict([('hi','goodbye')])
{'hi': 'goodbye'}

বা:

>>> [ dict([i]) for i in (('CSCO', 21.14), ('CSCO', 21.14), ('CSCO', 21.14), ('CSCO', 21.14)) ]
[{'CSCO': 21.14}, {'CSCO': 21.14}, {'CSCO': 21.14}, {'CSCO': 21.14}]

আমি দেখতে পাচ্ছি না কীভাবে এই
— ওপির

4

যদি একই কীটির জন্য একাধিক মান থাকে তবে নিম্নলিখিত কোডটি সেই মানগুলিকে তাদের কী অনুসারে তালিকায় যুক্ত করবে,

d = dict()
for x,y in t:
    if(d.has_key(y)):
        d[y].append(x)
    else:
        d[y] = [x]

2

এটি করার কয়েকটি উপায় এখানে রইল:

>>> t = ((1, 'a'), (2, 'b'))

>>> # using reversed function
>>> dict(reversed(i) for i in t)
{'a': 1, 'b': 2}

>>> # using slice operator
>>> dict(i[::-1] for i in t)
{'a': 1, 'b': 2}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.