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 รายการที่มีอยู่ หากพจนานุกรม 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
|
required คีย์ที่จะค้นหา |
default
|
default is 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
ออกจาก dict และแสดงผลค่าที่เชื่อมโยง หากไม่พบรายการที่มีคีย์นั้น ระบบจะไม่นำรายการใดออกและแสดงค่า default
ที่ระบุไว้ หากไม่ได้ระบุค่าเริ่มต้น ระบบจะดำเนินการไม่สำเร็จ
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
key
|
required คีย์ |
default
|
ค่าเริ่มต้นคือ unbound ซึ่งเป็นค่าเริ่มต้นหากไม่มีคีย์ |
popitem
tuple dict.popitem()
(key, value)
แรกออกจากพจนานุกรมและแสดงผล popitem
มีประโยชน์ในการวนซ้ำพจนานุกรมแบบทำลายล้าง ซึ่งมักใช้ในอัลกอริทึมของชุด หากพจนานุกรมว่างเปล่า การเรียก popitem
จะดำเนินการไม่สำเร็จ
setdefault
unknown dict.setdefault(key, default=None)
key
อยู่ในพจนานุกรม ให้แสดงผลค่าของ key
หากไม่ใช่ ให้แทรกคีย์ที่มีค่าเป็น default
และแสดงผล default
default
จะมีค่าเริ่มต้นเป็น None
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
key
|
required คีย์ |
default
|
ค่าเริ่มต้นคือ None ซึ่งเป็นค่าเริ่มต้นหากไม่มีคีย์ |
อัปเดต
None
dict.update(pairs=[], **kwargs)
pairs
(ไม่บังคับ) จากนั้นอัปเดตด้วยอาร์กิวเมนต์คีย์เวิร์ด (ไม่บังคับ)
หากมีอาร์กิวเมนต์ตำแหน่ง อาร์กิวเมนต์ดังกล่าวต้องเป็น dict, iterable หรือ None
หากเป็นพจนานุกรม ระบบจะแทรกคู่คีย์/ค่าลงในพจนานุกรมนี้ หากเป็นรายการที่วนซ้ำได้ รายการดังกล่าวต้องระบุลําดับคู่ (หรือรายการที่วนซ้ำได้อื่นๆ ที่มีความยาว 2) ซึ่งแต่ละรายการจะถือเป็นคู่คีย์/ค่าที่จะแทรก
อาร์กิวเมนต์คีย์เวิร์ด name=value
แต่ละรายการจะทําให้ระบบแทรกคู่ชื่อ/ค่าลงในพจนานุกรมนี้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
pairs
|
ค่าเริ่มต้นคือ [] โดยจะเป็นพจนานุกรมหรือรายการรายการก็ได้ รายการต้องเป็นทูเพลตหรือลิสต์ที่มีองค์ประกอบ 2 อย่าง ได้แก่ คีย์และค่า |
kwargs
|
required คําจํากัดความของรายการเพิ่มเติม |
values
list dict.values()
{2: "a", 4: "b", 1: "c"}.values() == ["a", "b", "c"]