در استفاده از ساختارهای داده پایتون تسلط پیدا کنید. با نحوه تبدیل دیکشنری به فهرست آشنا شوید.
دستکاری داده ها در برنامه نویسی بسیار اتفاق می افتد، بسته به مشکلی که قصد حل آن را دارید. اغلب ممکن است متوجه شوید که یک ساختار داده را به دیگری تبدیل می کنید. برخی از انواع آنقدر شبیه هستند که تبدیل بین آنها یک فرآیند ساده است.
در پایتون، تبدیل یک فرهنگ لغت به یک فهرست تودرتو یا مسطح یکی از تبدیلهای محبوبی است که خودتان در حال انجام آن خواهید بود.
با استفاده از حلقه for یک دیکشنری پایتون را به فهرست تبدیل کنید
حلقه for در حین تبدیل دیکشنری پایتون به فهرست، کشش بیشتری روی داده ها به شما می دهد.
به عنوان مثال، کد زیر یک فرهنگ لغت را به یک لیست تودرتو تبدیل می کند:
myDictionary = {"A": "Python", "B": "JavaScript", "C": "Node"}
convertedList = []
for i in myDictionary:
convertedList.append([i, myDictionary[i]])
print(convertedList)
# Output: [['A', 'Python'], ['B', 'JavaScript'], ['C', 'Node']]
کد بالا هر جفت کلید (i) و مقدار (myDictionary[i]) را در لیستهای مجزا وارد میکند و آنها را به یک لیست خالی اضافه میکند.
این همان نوشتن است:
for key, value in myDictionary.items():
convertedList.append([key, value])
می توانید هر جفت را در یک ست یا تاپل نیز قرار دهید. تنها کاری که باید انجام دهید این است که پرانتزهای مربعی ([]) را در اطراف کلید، جفت ارزش با پرانتزهای فرفری ({}) یا پرانتز (()) بر این اساس جایگزین کنید.
همچنین می توانید با استفاده از یک حلقه for همراه با ویژگی درک لیست پایتون به این هدف برسید:
convertedList = [[i, myDictionary[i]] for i in myDictionary]
تابع تبدیل دیکشنری پایتون به فهرست مسطح
در حالی که گزینههای حلقه for بالا یک لیست تودرتو تولید میکنند، اگر این همان چیزی است که میخواهید میتوانید آن را به یک لیست مستقیم تبدیل کنید.
تابع زیر این کار را انجام می دهد:
def convertToStraightList(sampleDict):
flatList = []
for key, value in sampleDict.items():
flatList.extend([key, value])
return flatList
print(convertToStraightList(myDictionary))
# Output: ['A', 'Python', 'B', 'JavaScript', 'C', 'Node']
تابع فوق یک لیست مسطح را برمی گرداند و مفهوم آن ساده است. حلقه هر جفت کلید و مقدار را به لیستی اضافه می کند که تابع پس از اتمام آن را برمی گرداند.
استفاده از توابع یک لاینر داخلی
هر دو توابع نقشه و zip به راه حل های پایتون یک خطی برای این مشکل، با نتایج متفاوت، اجازه می دهند. بسته به مشکل شما ممکن است نسبت به حلقه for مناسبتر باشند و مطمئنا راحتتر هستند.
تابع zip یک لیست تودرتو از تاپل ها تولید می کند:
convertedList = list(zip(myDictionary.keys(), myDictionary.values()))
print(convertedList)
# Output: [('A', 'Python'), ('B', 'JavaScript'), ('C', 'Node')]
از سوی دیگر، تابع نقشه، لیستی از لیست ها را ارائه می دهد:
convertedList = list(map(list, myDictionary.items()))
print(convertedList)
# Output: [['A', 'Python'], ['B', 'JavaScript'], ['C', 'Node']]
در هر صورت بین لیست های پایتون و دیکشنری ها تبدیل کنید
این روش های مختلف برای تبدیل دیکشنری به فهرست در پایتون بسیار ساده است. بنابراین، شما می توانید یک فرهنگ لغت را به یک لیست بچرخانید، اما می توانید با تبدیل یک لیست پایتون به یک فرهنگ لغت، عکس آن را نیز انجام دهید.