Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python – แปลง List เป็น Dictionary ของ Index และ Value

บทความนี้สาธิตวิธีแปลงลิสต์ให้กลายเป็น 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 แทน 0
  • for i, v in enumerate(list): แยก Index และ Value
  • ใช้กับ String ได้: enumerate("hello") → (0,'h'), (1,'e'), ...