পাইথন: কীভাবে একটি স্ট্রিতে সেটগুলিতে প্রবেশ করতে হবে?


85

মূলত, আমি একটি স্ট্রিং আউটপুট করার জন্য একটি সেটটিতে এন্ট্রিগুলিকে একসাথে যুক্ত করার চেষ্টা করছি। আমি তালিকার জন্য যোগ ফাংশনের অনুরূপ সিনট্যাক্স ব্যবহার করার চেষ্টা করছি। এখানে আমার প্রচেষ্টা:

list = ["gathi-109","itcg-0932","mx1-35316"]
set_1 = set(list)
set_2 = set(["mx1-35316"])
set_3 = set_1 - set_2
print set_3.join(", ")

তবে আমি এই ত্রুটিটি পেয়েছি: AttributeError: 'set' object has no attribute 'join'

সেট জন্য সমতুল কল কি?

উত্তর:


166
', '.join(set_3)

joinএকটি স্ট্রিং পদ্ধতি, না একটি সেট পদ্ধতি।


14
যদি আপনার সেটে পূর্ণসংখ্যার / লম্বা থাকে তবে আপনাকে অবশ্যই ব্যবহার করতে হবে', '.join(str(s) for s in set_3)
55651909-089b-4e04-9408-47c5bf

32

সেটগুলির কোনও joinপদ্ধতি নেই তবে আপনি তার str.joinপরিবর্তে ব্যবহার করতে পারেন ।

', '.join(set_3)

str.joinপদ্ধতি তালিকা এবং সেট সহ যেকোন iterable বস্তুর উপর কাজ করবে।

দ্রষ্টব্য: পূর্ণসংখ্যাযুক্ত সেটগুলিতে এটি ব্যবহার সম্পর্কে সতর্কতা অবলম্বন করুন; কলটিতে যোগদানের আগে আপনাকে পূর্ণসংখ্যাকে স্ট্রিংয়ে রূপান্তর করতে হবে। উদাহরণ স্বরূপ

set_4 = {1, 2}
', '.join(str(s) for s in set_4)


4

তাছাড়াও setকিংবা listএই ধরনের পন্থা নেই join, স্ট্রিং এটা আছে:

','.join(set(['a','b','c']))

উপায় দ্বারা listআপনার ভেরিয়েবলগুলির জন্য নাম ব্যবহার করা উচিত নয় । এটি একটি list_, my_listবা অন্য কোনও নাম দিন কারণ listখুব অজগর ফাংশন ব্যবহৃত হয়।


4

সেটের কোনও অর্ডার নেই - সুতরাং আপনি যখন আপনার তালিকাটিকে একটি সেটে রূপান্তর করবেন তখন আপনার অর্ডার হারাতে পারে , যেমন:

>>> orderedVars = ['0', '1', '2', '3']
>>> setVars = set(orderedVars)
>>> print setVars
('4', '2', '3', '1')

সাধারণত অর্ডার থাকবে, তবে বড় সেটগুলির জন্য এটি প্রায় অবশ্যই হয় না।

অবশেষে, কেবল লোকজনকেই ভাবতে থাকে, যোগ দেওয়ার জন্য আপনার ',' দরকার নেই।

জাস্ট: '' .জাইন (সেট)

:)



3

আপনার যোগদানের বিবৃতিটি পিছনের দিকে চেষ্টা করুন:

print ', '.join(set_3)

0

আমি একটি পদ্ধতি লিখেছি যা নিম্নলিখিত প্রান্ত-কেসগুলি পরিচালনা করে:

  • এক আকার সেট করুন। এ ", ".join({'abc'})ফিরবে "a, b, c"। আমার কাঙ্ক্ষিত আউটপুট ছিল "abc"
  • পূর্ণসংখ্যা সহ সেট করুন।
  • খালি সেট ফিরতে হবে ""
def set_to_str(set_to_convert, separator=", "):
        set_size = len(set_to_convert)
        if not set_size:
            return ""
        elif set_size == 1:
            (element,) = set_to_convert
            return str(element)
        else:
            return separator.join(map(str, set_to_convert))

" ".join({'abc'})পছন্দসই o / p পেতে ব্যবহার করতে পারত "abc"repl.it এ এক্সিকিউটেবল কোড
অভিজিৎ

মজাদার. ঠিক বুঝতে পেরেছি যে সেট ('abc') এবং {'abc' এর বিভিন্ন আচরণ রয়েছে। এটাই আমাকে ফেলে দিয়েছে।
ফার্নান্দো ইরেরাজাভাল জি

আমি সেটঅভিধানের জন্য পরিচালনা করতে এক্সিকিউটেবল কোড আপডেট করেছি
অভিজিৎ jeet ই

FYI, ab 'abc' a একটি সেট। এবং "".join(set(ip_data))অক্ষরের একটি এলোমেলোভাবে অর্ডার দেয় (উদাহরণস্বরূপ, 'বিসিএ') কারণ সেটটি তিনটি উপাদান তৈরি করে {'এ', 'বি', 'সি'} তবে অর্ডার সংরক্ষণ করে না।
ফার্নান্দো ইরেরাজাভাল জি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.