แนวคิด
ลิสต์ของ dictionaries ซึ่งแต่ละ dict มี key เดียวกัน (เช่น "Python") ค่าของ key นั้นเป็นสตริง ให้เรียงลิสต์ตามตัวอักษร index i ของสตริงนั้น
ตัวอย่างโค้ด
my_list = [
{"Python": "Best", "to": "Code"},
{"Python": "Good", "to": "Learn"},
{"Python": "object", "to": "cool"},
{"Python": "oriented", "to": "language"}
]
print("ลิสต์ต้นฉบับ:", my_list)
K = "Python"
i = 2 # index ที่ 2 (0-based) = ตัวอักษรที่ 3
my_result = sorted(my_list, key=lambda d: d[K][i])
print(f"เรียงตามตัวอักษร index {i} ของ key '{K}':", my_result)
ผลลัพธ์
ลิสต์ต้นฉบับ: [{'Python': 'Best', 'to': 'Code'}, {'Python': 'Good', 'to': 'Learn'}, {'Python': 'object', 'to': 'cool'}, {'Python': 'oriented', 'to': 'language'}]
เรียงตามตัวอักษร index 2 ของ key 'Python': [{'Python': 'oriented', 'to': 'language'}, {'Python': 'object', 'to': 'cool'}, {'Python': 'Good', 'to': 'Learn'}, {'Python': 'Best', 'to': 'Code'}]
คำอธิบายตัวอักษร index 2
- "Best"[2] = 's'
- "Good"[2] = 'o'
- "object"[2] = 'j'
- "oriented"[2] = 'r'
- เรียง 'j', 'o', 'r', 's' -> oriented, object, Good, Best
การจัดการ Index Out of Range
def safe_key(d):
val = d[K]
return val[i] if i < len(val) else '' # ใส่ค่า default
my_result = sorted(my_list, key=safe_key)