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

เรียงลิสต์ Dictionary ตามค่าที่ index i ของ Key ที่กำหนด

แนวคิด

ลิสต์ของ 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)