บทความนี้สาธิตวิธีแปลงลิสต์ให้กลายเป็น Dictionary ที่มีคีย์ 'index' และ 'values' โดยใช้ enumerate()
โค้ดตัวอย่าง
my_list = [32, 0, 11, 99, 223, 51, 67, 28, 12, 94, 89]
print(f"ลิสต์ต้นฉบับ: {my_list}")
# เรียงจากมากไปน้อย
my_list.sort(reverse=True)
print(f"ลิสต์เรียงมากไปน้อย: {my_list}")
# แปลงเป็น Dictionary
index_key = "index"
value_key = "values"
my_result = {index_key: [], value_key: []}
for idx, val in enumerate(my_list):
my_result[index_key].append(idx)
my_result[value_key].append(val)
print("\nผลลัพธ์:")
print(my_result)
ผลลัพธ์
ลิสต์ต้นฉบับ: [32, 0, 11, 99, 223, 51, 67, 28, 12, 94, 89]
ลิสต์เรียงมากไปน้อย: [223, 99, 94, 89, 67, 51, 32, 28, 12, 11, 0]
ผลลัพธ์:
{'index': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'values': [223, 99, 94, 89, 67, 51, 32, 28, 12, 11, 0]}
วิธีสั้นกว่า: Dictionary Comprehension
# แปลงโดยตรง
my_result = {
'index': list(range(len(my_list))),
'values': my_list.copy()
}
# หรือใช้ zip
my_result = dict(zip(['index', 'values'], [list(range(len(my_list))), my_list]))
การประยุกต์: สร้าง DataFrame จากลิสต์
import pandas as pd
# แปลงเป็น DataFrame โดยตรง
df = pd.DataFrame({'index': range(len(my_list)), 'values': my_list})
print(df)
# หรือใช้ Series
s = pd.Series(my_list, name='values')
s.index.name = 'index'
print(s.reset_index())
การใช้งาน enumerate() อื่นๆ
enumerate(list, start=1)เริ่มนับจาก 1 แทน 0for i, v in enumerate(list):แยก Index และ Value- ใช้กับ String ได้:
enumerate("hello")→ (0,'h'), (1,'e'), ...