পাইথনের একটি সেটে মান যুক্ত করুন


372

আমার এই মত একটি সেট আছে:

keep = set(generic_drugs_mapping[drug] for drug in drug_input)

[0,1,2,3,4,5,6,7,8,9,10]এই সেটটিতে আমি কীভাবে মান যুক্ত করব ?

উত্তর:


405
keep.update(yoursequenceofvalues)

যেমন, keep.update(xrange(11))আপনার নির্দিষ্ট উদাহরণের জন্য। অথবা, আপনি যদি আছে অন্য কোন কারণে একটি লুপ মান উত্পাদন

for ...whatever...:
  onemorevalue = ...whatever...
  keep.add(onemorevalue)

তবে, অবশ্যই, একটি একক .updateকল দিয়ে এটি প্রচুর পরিমাণে করা দ্রুত এবং হস্তান্তরযোগ্য, যখন অন্যথায় সম্ভব হয়।


78
.addএকক আইটেম যুক্ত করে, .updateবেশ কয়েকটি আইটেম যুক্ত করে। এটা কি ঠিক?
থারস্মমনার

16
@ থারস্মমনার হ্যাঁ, .addএকটি একক হ্যাশযোগ্য প্রকারের .updateপ্রত্যাশা করে , আবার প্রত্যাবর্তনযোগ্য বস্তুর প্রত্যাশা করে
বনি

4
আপনি যদি আপডেটের সাথে একটি স্ট্রিং যোগ করেন তবে এটি আপনার স্ট্রিংয়ে অক্ষর অনুসারে একটি আইটেম যুক্ত করবে কারণ এটি একটি পুনরাবৃত্তিযোগ্য!
hgolov

2
সত্যই এটি লক্ষ করা গুরুত্বপূর্ণ যে "সম্পূর্ণ" অবজেক্ট হিসাবে স্ট্রিংগুলি যুক্ত করা উচিত .add, না .update, এই সামান্য বিবরণের কারণে সম্প্রতি আমি বেশ চঞ্চল বাগের মুখোমুখি হয়েছিলাম।
lalilulelost

276

সেট নির্ধারণ করুন

a = set()

একক মান যুক্ত করতে অ্যাড ব্যবহার করুন

a.add(1)
a.add(2)

টিপলস, সেট, তালিকা বা হিমায়িত-সেট থেকে উপাদান যুক্ত করতে আপডেট ব্যবহার করুন

a.update([3,4])

>> print(a)
{1, 2, 3, 4}

আপনি যদি একটি টিপল বা হিমায়িত সেট নিজেই যুক্ত করতে চান তবে অ্যাড ব্যবহার করুন

a.add((5, 6))

>> print(a)
{1, 2, 3, 4, (5, 6)}

দ্রষ্টব্য: যেহেতু সেট উপাদানগুলি অবশ্যই হ্যাশযোগ্য এবং তালিকাগুলি পারস্পরিক পরিবর্তনযোগ্য হিসাবে বিবেচিত হয়, সুতরাং আপনি কোনও সেটে একটি তালিকা যুক্ত করতে পারবেন না। আপনি কোনও সেটটিতে অন্যান্য সেটও যুক্ত করতে পারবেন না। তবে আপনি ".আপডেট" পদ্ধতিতে প্রদর্শিত হিসাবে তালিকা এবং সেটগুলি থেকে উপাদান যুক্ত করতে পারেন।


105

আপনি |দুটি সেট সংযুক্ত করতে অপারেটরটিও ব্যবহার করতে পারেন (সেট থিউরিতে ইউনিয়ন ):

>>> my_set = {1}
>>> my_set = my_set | {2}
>>> my_set
{1, 2}

বা একটি ছোট ফর্ম ব্যবহার করে |=:

>>> my_set = {1}
>>> my_set |= {2}
>>> my_set
{1, 2}

দ্রষ্টব্য: পাইথন ২.7 এর পূর্ববর্তী সংস্করণগুলিতে set([...])পরিবর্তে ব্যবহার করুন {...}


1
আপনার যদি সেটগুলির একটি তালিকা থাকে my_sets, তবে আপনি big_set = my_sets[0].union(*my_sets[1:])সেগুলি একত্রিত করতে পারেন
zelusp


10

এই প্রশ্নটি প্রথমটি Google এ প্রদর্শিত হয় যখন কোনওটি "সেট করার জন্য কীভাবে পাইথনগুলিকে যুক্ত করতে হয়" তা দেখায়, সুতরাং এটি স্পষ্টভাবে লক্ষ করার মতো যে আপনি যদি একটি সেটে একটি পুরো স্ট্রিং যুক্ত করতে চান তবে এটি যুক্ত করা উচিত .add(), না .update()

বলুন যে আপনার কাছে একটি স্ট্রিং রয়েছে foo_strযার বিষয়বস্তু 'this is a sentence'এবং আপনার bar_setসমান কিছু সেট রয়েছে set()

আপনি যদি করেন তবে bar_set.update(foo_str)আপনার সেটের সামগ্রীগুলি হবে {'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}

আপনি যদি করেন তবে bar_set.add(foo_str)আপনার সেটের সামগ্রীগুলি হবে {'this is a sentence'}


3

আমি যেভাবে এটি করতে চাই তা হ'ল মূল সেট এবং মানগুলিকে আমি তালিকাগুলিতে যুক্ত করতে, সেগুলিতে যুক্ত করতে এবং তারপরে সেগুলিকে আবার সেটগুলিতে রূপান্তর করা:

setMenu = {"Eggs", "Bacon"}
print(setMenu)
> {'Bacon', 'Eggs'}
setMenu = set(list(setMenu) + list({"Spam"}))
print(setMenu)
> {'Bacon', 'Spam', 'Eggs'}
setAdditions = {"Lobster", "Sausage"}
setMenu = set(list(setMenu) + list(setAdditions))
print(setMenu)
> {'Lobster', 'Spam', 'Eggs', 'Sausage', 'Bacon'}

এইভাবে আমি একই যুক্তি ব্যবহার করে খুব সহজেই একাধিক সেট যুক্ত করতে পারি, যা TypeError: unhashable type: 'set'আমি যদি .update()পদ্ধতিটি দিয়ে চেষ্টা করার চেষ্টা করি তবে এটি আমার হয়ে যায় ।



0

আমার জন্য, পাইথন 3 এ এটি কেবল এইভাবে কাজ করছে:

keep = keep.union((0,1,2,3,4,5,6,7,8,9,10))

আমি জানি না এটি সঠিক হতে পারে কিনা ...

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