একটি লাইনার: কী হিসাবে সূচকগুলি তালিকা থেকে একটি অভিধান তৈরি করা হচ্ছে


91

আমি একটি প্রদত্ত তালিকার বাইরে একটি অভিধান তৈরি করতে চাই, কেবল একটি লাইনে । অভিধানের কীগুলি সূচকগুলি হবে এবং মানগুলির তালিকার উপাদান থাকবে। এটার মতো কিছু:

a = [51,27,13,56]         #given list

d = one-line-statement    #one line statement to create dictionary

print(d)

আউটপুট:

{0:51, 1:27, 2:13, 3:56}

কেন আমি একটি লাইন চাই সে সম্পর্কে আমার কোনও নির্দিষ্ট প্রয়োজনীয়তা নেই । আমি কেবল অজগরটি অন্বেষণ করছি এবং ভাবছি যে এটি সম্ভব কিনা।


4
এই অভিধানটি পেয়ে আপনি কী সুবিধা পাবেন বলে মনে করেন? অভিধানের সাহায্যে সূচী অনুসন্ধানগুলি আর দ্রুত হবে না।
মার্টিজন পিটারস

@MartijnPieters: ওয়েল, আমি প্রয়োজন হতে পারে, যেমন, এই: {[x[0]:51, x[1]:27, x[2]:13, x[3]:56}
নওয়াজ

4
তারপর ব্যবহার zip(): dict(zip(x, a))
মার্টিজন পিটারস

উত্তর:


160
a = [51,27,13,56]
b = dict(enumerate(a))
print(b)

উত্পাদন করবে

{0: 51, 1: 27, 2: 13, 3: 56}

enumerate(sequence, start=0)

একটি গণনা করা বস্তু ফিরিয়ে দিন। সিক্যুয়েন্স অবশ্যই একটি সিকোয়েন্স, একটি পুনরুক্তিকারী বা অন্য কোনও অবজেক্ট হতে হবে যা পুনরাবৃত্তিকে সমর্থন করে। next()পুনরুক্তিকারীর দ্বারা ফিরে পদ্ধতি enumerate()আয় একটি tuple(থেকে একটি গণনা ধারণকারী শুরু যা 0 ডিফল্ট) এবং মান উপর iterating থেকে প্রাপ্ত ক্রম :


4
@ জামিলাক তবে আপনার অপসারণের দরকার নেই। মানুষ সম্বন্ধে জানতে পারতাম count()...
glglgl

50

অন্য কন্সট্রাক্টরের সাথে আপনার আছে

a = [51,27,13,56]         #given list
d={i:x for i,x in enumerate(a)}
print(d)

7
পছন্দ করেছেন
কেভিনজেসনার

আমি সংশোধন করেছি. তবুও, মনে রাখবেন যে এটি পূর্ববর্তী পাইথন 2 সংস্করণে প্রযোজ্য নয়।
স্টেফানো সানফিলিপো

15

চেষ্টা করুন enumerate: এটি টিপলসের একটি তালিকা (বা পুনরুক্তিকারী) (i, a[i])ফিরিয়ে দেবে, যেখান থেকে আপনি এটি তৈরি করতে পারেন dict:

a = [51,27,13,56]  
b = dict(enumerate(a))
print b


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