কীভাবে 2-উপাদানগুলির তালিকার একটি হ্যাশ তৈরি করা যায়?


9

আমার দ্বি-উপাদানগুলির তালিকার একটি তালিকা রয়েছে, যেমন আপনি উদাহরণস্বরূপ কী পেতে (1..5) Z (20..24)চান, আমি একটি হ্যাশ তৈরি করতে চাই (এই উদাহরণে, আপনি যা পেয়েছেন {1 => 20, 2 => 21, 3 => 22, 4 => 23, 5 =>24}I আমি এটি "হাত দিয়ে" করতে পারতাম, তবে এটি আইসন নয়) 'খুব মার্জিত না, এবং আমি নিশ্চিত রাকুর এটি করার একটি অদ্ভুত উপায় আছে I আমি যে অবহেলিত বিকল্পটি নিয়ে এসেছি তা হ'ল:

my @a = (1..5) Z (20..24);
my %a;
for @a -> @x {
   %a{@x[0]} = @x[1];

উত্তর:


12
my %h = (1..5) Z=> (20..24);
say %h;  # {1 => 20, 2 => 21, 3 => 22, 4 => 23, 5 => 24}

Zমেটা-অপারেটর তার নামের অংশ হিসাবে একটি অপারেটর নেয় এবং তা অক্ষমতা ,, এইভাবে ডিফল্টরূপে তালিকা তৈরি করা। যদি আপনি Pairকনস্ট্রাক্টর (ওরফে ফ্যাট-কমা) যোগ করেন তবে আপনি এর একটি তালিকা তৈরি করুন Pair, যা আপনি একটিতে খাওয়াতে পারবেনHash ।

একটি বিকল্প সমাধান flatএর ফলাফল দশ হতে হবে Z:

my %h = flat (1..5) Z (20..24);

1
এই নির্দিষ্ট উদাহরণের জন্য, এটি সূক্ষ্ম কাজ করে। তবে আমি যদি অন্য কোনও উপায়ে তালিকার তালিকা পেয়ে যাই?
— ভোনব্র্যান্ড 21

1
তারপরে দ্বিতীয় বিকল্পটি ব্যবহার করে flatকাজ করা উচিত।
— এলিজাবেথ ম্যাটিজসেন 21

1
@ ভনব্র্যান্ড সমতল কৌশল পুরোপুরি সাধারণ is flatযদি স্তরগুলি হয় তবে একটি বহু-স্তরের ডেটা কাঠামোর একাধিক স্তরকে সমতল করবে List। তবে আপনি যদি ইতিমধ্যে নন- Listগুলি প্রবর্তন করেছেন , উদাহরণস্বরূপ এমনটি Arrayনা করার flat আগে ডেটা নির্দিষ্ট করে দেওয়া , তবে flatআর সঠিক সরঞ্জাম হবে না। উদাহরণস্বরূপ, আপনি যদি এটি ব্যবহার করে নির্ধারিত হন my @a = 1..5 Z 20..25;তবে flatএকা কাজটি করবেন না। আমি এটি চ্যাপ্টা হবে my %h = @a[*;*];। আমি এখানে বহু-স্তরের ডেটা সমতল করতে সাবস্ক্রিপ্টগুলি ব্যবহার সম্পর্কে আরও কিছু লিখেছি ।
— রায়ফ

@ র‌্যাল্ফ, কী হবে ((1, (1, 2, 3)), (2, (5, 6)), (17, (3, 4, 5, 92, 31))(অর্থাত্ শেষ ফলাফলটি হ্যাশ হিসাবে মান হিসাবে তালিকা থাকবে)?
— ভনব্রান্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.