dict เป็นประเภทในตัวที่แสดงการแมปแบบเชื่อมโยงหรือพจนานุกรม พจนานุกรมรองรับการจัดทำดัชนีโดยใช้ d[k]
และทดสอบการเป็นสมาชิกหลักโดยใช้ k in d
การดำเนินการทั้ง 2 อย่างจะต้องใช้เวลาคงที่ พจนานุกรมที่ไม่ได้ตรึงไว้จะเปลี่ยนแปลงได้ และอาจอัปเดตได้ด้วยการกำหนดให้กับ d[k]
หรือโดยการเรียกใช้บางวิธี พจนานุกรมใช้งานง่าย การทำซ้ำจะให้ลำดับของคีย์ในใบสั่งซื้อการใส่โฆษณา ลำดับการทำซ้ำจะไม่ได้รับผลกระทบจากการอัปเดตค่าที่เชื่อมโยงกับคีย์ที่มีอยู่ แต่จะได้รับผลกระทบจากการนำคีย์ออกแล้วเสียบกลับเข้าไปใหม่
d = {0: 0, 2: 2, 1: 1} [k for k in d] # [0, 2, 1] d.pop(2) d[0], d[2] = "a", "b" 0 in d, "a" in d # (True, False) [(k, v) for k, v in d.items()] # [(0, "a"), (1, 1), (2, "b")]
การสร้างพจนานุกรมมี 4 วิธีดังนี้
- นิพจน์พจนานุกรม
{k: v, ...}
จะสร้างพจนานุกรมใหม่ที่มีรายการคีย์/ค่าที่ระบุ โดยจะแทรกตามลำดับที่ปรากฏในนิพจน์ การประเมินจะไม่สำเร็จหากนิพจน์ทั่วไป 2 นิพจน์มีค่าเท่ากัน - ความเข้าใจในพจนานุกรม
{k: v for vars in seq}
จะแสดงพจนานุกรมใหม่ที่มีการแทรกคู่คีย์/ค่าตามลำดับการวนซ้ำ อนุญาตให้มีรายการที่ซ้ำกัน: การแทรกคีย์แรกของคีย์ที่กำหนดจะเป็นตัวกำหนดตำแหน่งในลำดับ และการแทรกรายการสุดท้ายจะเป็นตัวกำหนดค่าที่เกี่ยวข้อง{k: v for k, v in (("a", 0), ("b", 1), ("a", 2))} # {"a": 2, "b": 1} {i: 2*i for i in range(3)} # {0: 0, 1: 2, 2: 4}
- การเรียกฟังก์ชัน dict ในตัวจะแสดงพจนานุกรมที่มีรายการที่ระบุ ซึ่งจะแทรกตามลำดับอาร์กิวเมนต์ อาร์กิวเมนต์ตำแหน่งก่อนตั้งชื่อ อนุญาตให้ใช้คีย์ซ้ำกันได้เช่นเดียวกับความเข้าใจ
- นิพจน์สหภาพ
x | y
จะให้พจนานุกรมใหม่โดยการรวมพจนานุกรม 2 ฉบับที่มีอยู่เข้าด้วยกัน หากพจนานุกรมทั้งสองมีคีย์k
เหมือนกัน ค่าของคีย์ในพจนานุกรมด้านขวา (กล่าวคือy[k]
) จะชนะ ตัวแปร|=
ของโอเปอเรเตอร์สหภาพจะแก้ไขพจนานุกรมในตำแหน่งเดิม ตัวอย่าง:d = {"foo": "FOO", "bar": "BAR"} | {"foo": "FOO2", "baz": "BAZ"} # d == {"foo": "FOO2", "bar": "BAR", "baz": "BAZ"} d = {"a": 1, "b": 2} d |= {"b": 3, "c": 4} # d == {"a": 1, "b": 3, "c": 4}
สมาชิก
ล้าง
None
dict.clear()
รับ
unknown dict.get(key, default=None)
key
หาก key
อยู่ในพจนานุกรม มิฉะนั้น default
หากไม่ได้ระบุ default
ค่าเริ่มต้นจะเป็น None
ดังนั้นวิธีนี้จึงไม่ทำให้เกิดข้อผิดพลาด
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
key
|
ต้องระบุ กุญแจสำคัญที่ควรมองหา |
default
|
ค่าเริ่มต้นคือ None ค่าเริ่มต้นที่จะใช้ (แทน "ไม่มี") หากไม่พบคีย์ |
รายการ
list dict.items()
{2: "a", 4: "b", 1: "c"}.items() == [(2, "a"), (4, "b"), (1, "c")]
กุญแจ
list dict.keys()
{2: "a", 4: "b", 1: "c"}.keys() == [2, 4, 1]
ป็อป
unknown dict.pop(key, default=unbound)
key
ออกจากคำสั่งและแสดงผลค่าที่เกี่ยวข้อง หากไม่พบรายการที่มีคีย์ดังกล่าว ให้นำข้อมูลใดๆ ออกและแสดงผลค่า default
ที่ระบุ หากไม่ได้ระบุค่าเริ่มต้นไว้ ระบบจะล้มเหลวแทน
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
key
|
ต้องระบุ กุญแจ |
default
|
ค่าเริ่มต้นคือ unbound ค่าเริ่มต้นหากไม่มีคีย์ |
รายการป๊อป
tuple dict.popitem()
(key, value)
คู่แรกจากพจนานุกรม popitem
มีประโยชน์ในการทำซ้ำในพจนานุกรมแบบทำลายล้าง ซึ่งมักจะใช้ในอัลกอริทึมของชุด หากพจนานุกรมว่างเปล่า จะเรียกใช้ popitem
ไม่สำเร็จ
setdefault
unknown dict.setdefault(key, default=None)
key
อยู่ในพจนานุกรม ให้แสดงผลค่า หากไม่เห็น ให้แทรกคีย์ที่มีค่าเป็น default
แล้วแสดงผล default
default
จะมีค่าเริ่มต้นเป็น None
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
key
|
ต้องระบุ กุญแจ |
default
|
ค่าเริ่มต้นคือ None ค่าเริ่มต้นหากไม่มีคีย์ |
อัปเดต
None
dict.update(pairs=[], **kwargs)
pairs
จากนั้นจึงอัปเดตอาร์กิวเมนต์คีย์เวิร์ดที่ไม่บังคับ
หากมีอาร์กิวเมนต์ตำแหน่ง อาร์กิวเมนต์นั้นต้องเป็น dict, วนซ้ำ หรือ ไม่มี
หากเป็นคำสั่ง ระบบจะแทรกคู่คีย์/ค่าลงในคำสั่งนี้ หากเป็นการทำซ้ำได้ จะต้องระบุลำดับคู่ (หรือชุดย่อยอื่นๆ ที่มีความยาว 2) โดยแต่ละคู่จะถือเป็นคู่คีย์/ค่าที่จะแทรก
อาร์กิวเมนต์คีย์เวิร์ดแต่ละรายการ name=value
จะทำให้แทรกคู่ชื่อ/ค่าลงในคำสั่งนี้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
pairs
|
ค่าเริ่มต้นคือ [] อาจเป็นพจนานุกรมหรือรายการ รายการจะต้องเป็นแบบทวีคูณหรือรายการที่มีองค์ประกอบ 2 อย่าง ได้แก่ คีย์และค่า |
kwargs
|
ต้องระบุ พจนานุกรมของรายการเพิ่มเติม |
ค่า
list dict.values()
{2: "a", 4: "b", 1: "c"}.values() == ["a", "b", "c"]