Python

Python Tutorial – Count The Dogs

tutorial ฝึกเขียน python function เพื่อวิเคราะห์ข้อมูลง่ายๆด้วย dictionary และ control flow (if-else, for loop) พร้อมตัวอย่างโค้ดแบบเต็มๆ

tutorial นี้เราจะมาสอนเขียน Python function ง่ายๆเพื่อใช้วิเคราะห์ข้อมูล โดย input คือ list of items ส่วน output จะออกมาเป็น dictionary (key คือชื่อ item และ value คือจำนวน item นั้นๆ)

สำหรับเพื่อนๆที่อยากทำตาม tutorial นี้ ต้องเข้าใจสองเรื่องนี้ก่อน

  • list vs. dictionary
  • control flow (if-else และ for loop)

ถ้าใครยังใหม่กับ Python ลองดูคอร์สฟรีของเราก่อนที่ https://datarockie.com/p/python-for-non-programmer

Count Animals

โจทย์คือเราต้องการนับจำนวน dog, cat, hippo ที่อยู่ใน list animals วิธีการที่เราจะแก้ปัญหาใน Python จะเริ่มจากการสร้าง empty dictionary ขึ้นมาก่อน (line 8)

ตั้งแต่ line 12-16 คือการเขียน for loop เพื่อนับ item ทีละตัวที่อยู่ใน animals ภายใน for loop เราเขียน if-else เพื่อเช็คชื่อ animal ตัวนั้นและอัพเดท key-value ใน result dictionary

# input
animals = ['dog', 'cat', 'cat', 'dog', 'dog', 'dog', 'cat', 'dog', 'hippo']
# expected output
# result = {'dog':5, 'cat':3, 'hippo':1}
# create empty dict to save our output
result = {}
# we write for loop and if-else
# to check every item in the animals list
for animal in animals:
if animal in result:
result[animal] += 1
else:
result[animal] = 1
# print output
print(result)
view raw .py hosted with ❤ by GitHub

if animal in result: คือเงื่อนไขที่เราใช้ตรวจสอบว่ามีชื่อ animal ตัวนั้นอยู่ใน result dictionary ของเราหรือยัง?

  • if True – เราจะอัพเดท result ด้วยโค้ด result[animal] += 1
  • if False – เราจะอัพเดท result ด้วยโค้ด result[animal] = 1

ทำไม if False เราถึงเขียน result[animal] = 1? เพราะ for loop รอบนั้นคือการเจอชื่อ animal ตัวนั้นเป็นครั้งแรก เราเลยอัพเดท result dictionary {key: value} ด้วย {ชื่อ animal: 1}

เมื่อ for loop วิ่งครบทุก item ที่อยู่ใน list animals แล้ว เราจะได้ result dictionary หน้าตาแบบนี้ {‘dog’:5, ‘cat’:3, ‘hippo’:1} ลอง print(result) ออกมาตรวจสอบความถูกต้องอีกครั้งหนึ่ง

Function

เราสามารถเขียน wrap โค้ดด้านบนเป็น function เพื่อนำไปใช้นับ items ใน list อื่นได้

ข้อดีของ function คือ reusable ใช้ซ้ำได้เรื่อยๆ ไม่ต้องเขียนโค้ดใหม่ให้เมื่อยมือ 😛

ใน Python เราสร้างฟังชั่นใช้เองง่ายๆด้วย def keyword บรรทัดสุดท้ายของฟังชั่นเราใช้ return keyword เพื่อ return ผลลัพธ์ที่ได้จากฟังชั่น ดูโค้ดตัวอย่างด้านล่าง

# write a reusable function
def count_item(input_list):
"""count item in a list, return a dict"""
result = {}
for item in input_list:
if item in result:
result[item] += 1
else:
result[item] = 1
return result
view raw .py hosted with ❤ by GitHub

Testing

ลองทดสอบ count_item() กับ list อื่นๆ ว่ามันให้ผลลัพธ์อย่างที่เราต้องการหรือเปล่า

# input
animals = ['dog', 'cat', 'cat', 'dog', 'dog', 'dog', 'cat', 'dog', 'hippo']
genders = ['M', 'F', 'F', 'F', 'M']
balls = ['red', 'red', 'blue', 'blue', 'blue', 'black']
# test function
print(count_item(animals))
print(count_item(genders))
print(count_item(balls))
view raw .py hosted with ❤ by GitHub

Well done !! ใน tutorial นี้เราเรียนวิธีการเขียนฟังชั่นๆง่าย เพื่อนับจำนวน items ใน list และ return ผลลัพธ์ในรูปแบบของ dictionary

1 comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.