جلسه ۷۴: تبدیل ساختمان داده ها به یکدیگر در پایتون

در این درس به بررسی راههای موجود برای تبدیل ساختمانهای داده به یکدیگر میپردازیم. ما قبلا دیدیم که چگونه میتوانیم نوع دادههای موجود در پایتون را به یکدیگر تبدیل کنیم. اکنون همین منوال را میتوانیم برای ساختمان دادهها داشته باشیم!
تبدیل صریح
یک راهکارصریح برای تبدیل از یک ساختمان داده به یک ساختمان دیگر به صورت زیر است:
destination_structure_name(source_structure_object)
destination_structure_name
نام ساختمان دادهای است که میخواهیم به آن تبدیل بشود. source_structure_object
شی ای است که میخواهیم عملیات تبدیل روی آن انجام شود.
تبدیل به لیست
میتوانیم tuple ها
،set
ها یا دیکشنری ها را به یک لیست با استفاده از تابع ()list
تبدیل کنیم. البته در مورد دیکشنریها فقط key
ها به لیست تبدیل میشوند.
star_wars_tup = ("Anakin", "Darth Vader", 1000)
print(star_wars_tup)
star_wars_set = {"Anakin", "Darth Vader", 1000}
print(star_wars_set)
star_wars_dict = {1: "Anakin", 2: "Darth Vader", 3: 1000}
print(star_wars_dict)
star_wars_list = list(star_wars_tup) # Converting from tuple
print(star_wars_list)
star_wars_list = list(star_wars_set) # Converting from set
print(star_wars_list)
star_wars_list = list(star_wars_dict) # Converting from dictionary
print(star_wars_list)
میتوانیم با روش ()dict.items
روی یک دیکشنری، آن را به مجموعهای از (key,value) ها تبدیل کنیم تا عملیات هایی نظیر حرکت کردن روی اعضا به سادگی قابل انجام باشد. بعد از این کار نیز میتوانید tuple
ساخته شده را با ()list
به یک لیست تبدیل کنید.
star_wars_dict = {1: "Anakin", 2: "Darth Vader", 3: 1000}
print(star_wars_dict)
star_wars_list = list(star_wars_dict.items())
print(star_wars_list)
تبدیل به Tuple
هر نوع ساختمان دادهای میتواند با استفاده از ()tuple
به tuple
تبدیل شود. البته در مورد دیکشنریها فقط key
ها به tuple
تبدیل میشوند.
star_wars_list = ["Anakin", "Darth Vader", 1000]
print(star_wars_list)
star_wars_set = {"Anakin", "Darth Vader", 1000}
print(star_wars_set)
star_wars_dict = {1: "Anakin", 2: "Darth Vader", 3: 1000}
print(star_wars_dict)
star_wars_tup = tuple(star_wars_list) # Converting from list
print(star_wars_tup)
star_wars_tup = tuple(star_wars_set) # Converting from set
print(star_wars_tup)
star_wars_tup = tuple(star_wars_dict) # Converting from dictionary
print(star_wars_tup)
تبدیل به set
تابع سازنده ()set
میتواند برای تبدیل هر ساختمان دادهای به set
ها استفاده شود.البته در مورد دیکشنریها فقط key
ها به set
تبدیل میشوند.
star_wars_list = ["Anakin", "Darth Vader", 1000]
print(star_wars_list)
star_wars_tup = ("Anakin", "Darth Vader", 1000)
print(star_wars_tup)
star_wars_dict = {1: "Anakin", 2: "Darth Vader", 3: 1000}
print(star_wars_dict)
star_wars_set = set(star_wars_list) # Converting from list
print(star_wars_set)
star_wars_set = set(star_wars_tup) # Converting from tuple
print(star_wars_set)
star_wars_set = set(star_wars_dict) # Converting from dictionary
print(star_wars_set)
تبدیل به دیکشنری
تابع سازنده ()dict
نمیتواند مانند سایرین استفاده شود چراکه نیاز به جفت key-value
ها به جای یک value
مشخص دارد. بنابراین دادهها باید به صورت یک جفت باشند. به عنوان مثال، یک لیست از tuple
ها که طول هر tuple
عدد ۲ است را به دیکشنری تبدیل میکنیم. این جفت ها میتواند به جفت key-value
تبدیل شود:
star_wars_list = [[1,"Anakin"], [2,"Darth Vader"], [3, 1000]]
print (star_wars_list)
star_wars_tup = ((1, "Anakin"), (2, "Darth Vader"), (3, 1000))
print (star_wars_tup)
star_wars_set = {(1, "Anakin"), (2, "Darth Vader"), (3, 1000)}
print (star_wars_set)
star_wars_dict = dict(star_wars_list) # Converting from list
print(star_wars_dict)
star_wars_dict = dict(star_wars_tup) # Converting from tuple
print(star_wars_dict)
star_wars_dict = dict(star_wars_set) # Converting from set
print(star_wars_dict)
الیته راه های دیگری هم برای تبدیل بین ساختمان هایداده وجود دارد، اما آن ها راهحل های صریحی نیستند. قبل از آنکه به بخش کتابخانه های پایتون برویم، کوییزی که در مورد ساختمان های داده موجود است را امتحان کنید!