پیمایش دیکشنری با حلقه
در واقع، در این درس پیمایش دیکشنری با حلقه را از پایه و با مثال یاد میگیرید.
بنابراین پیمایش دیکشنری یک تفاوت مهم با لیست دارد: هر عنصر دو بخش دارد، کلید و مقدار. پس اول باید مشخص کنید کدامش را میخواهید.
پیمایش کلیدها
person = {"name": "علی", "age": 25, "city": "تهران"}
for key in person:
print(key)
name
age
city
همچنین، این را خوب به خاطر بسپارید: وقتی مستقیم روی دیکشنری حلقه میزنید، پایتون کلیدها را تحویلتان میدهد، نه مقادیر را. خیلیها اینجا گیج میشوند.
پیمایش مقادیر
for value in person.values():
print(value)
علی
25
تهران
پیمایش همزمان کلید و مقدار
به این ترتیب، این رایجترین حالت است و متد items برای همین ساخته شده:
for key, value in person.items():
print(key, "=", value)
name = علی
age = 25
city = تهران
علاوه بر این، اگر درس تاپل را خوانده باشید، اینجا چیز جدیدی رخ نمیدهد. متد items در هر دور، یک تاپل دوتایی میدهد و شما همان لحظه بازش میکنید.
یک مثال کاربردی
scores = {"علی": 18, "زهرا": 12, "رضا": 9}
for name, score in scores.items():
if score >= 10:
print(name, "قبول شد")
else:
print(name, "مردود شد")
علی قبول شد
زهرا قبول شد
رضا مردود شد
اشتباهات رایج
تصور اینکه حلقه مقادیر را میدهد
for item in scores:
print(item + 5)
TypeError: can only concatenate str (not "int") to str
در نهایت، چون item کلید است و کلیدها اینجا رشتهاند.
حذف کلید حین پیمایش
for name in scores:
if scores[name] < 10:
del scores[name]
RuntimeError: dictionary changed size during iteration
خوشبختانه پایتون اینجا برخلاف لیست، صریحاً خطا میدهد. راه درست این است که روی یک کپی حرکت کنید:
for name in list(scores.keys()):
if scores[name] < 10:
del scores[name]
جمعبندی
حلقهی ساده روی دیکشنری، کلیدها را میدهد. برای مقادیر از values و برای هر دو از items استفاده کنید.
در درس بعدی یاد میگیرید دیکشنری را مرتب کنید؛ چه بر اساس کلید و چه بر اساس مقدار.
برای مطالعهی بیشتر میتوانید به مستندات رسمی پایتون سر بزنید.
این درس بخشی از دوره آموزش پایتون مقدماتی است.