รวม Dictionary สองตัวให้กลายเป็นหนึ่งตัวในบรรทัดเดียว
วิธีที่ 1: update() (In-place, Python ทุกเวอร์ชัน)
>> a = {1: 'a', 2: 'b', 3: 'c'}
>>> b = {'x': 1, 'y': 2, 'z': 3}
>>> a.update(b)
>>> a
{1: 'a', 2: 'b', 3: 'c', 'x': 1, 'y': 2, 'z': 3}
ข้อควรระวัง: update() แก้ไข a inplace และคืนค่า None → ไม่สามารถ chain ได้
วิธีที่ 2: Dictionary Unpacking ** (Python 3.5+, สร้าง Dict ใหม่)
>> a = {1: 'a', 2: 'b', 3: 'c'}
>>> b = {'x': 1, 'y': 2, 'z': 3}
>>> c = {**a, **b}
>>> c
{1: 'a', 2: 'b', 3: 'c', 'x': 1, 'y': 2, 'z': 3}
สร้าง Dictionary ใหม่ c โดยไม่เปลี่ยน a และ b
วิธีที่ 3: Merge Operator | (Python 3.9+)
>> a = {1: 'a', 2: 'b', 3: 'c'}
>>> b = {'x': 1, 'y': 2, 'z': 3}
>>> c = a | b
>>> c
{1: 'a', 2: 'b', 3: 'c', 'x': 1, 'y': 2, 'z': 3}
>>> # In-place update
>>> a |= b
>>> a
{1: 'a', 2: 'b', 3: 'c', 'x': 1, 'y': 2, 'z': 3}
กฎ Key ซ้ำ (Last One Wins)
>> a = {'x': 1}
>>> b = {'x': 999}
>>> {**a, **b}
{'x': 999} # ค่าจาก b (ขวา) ชนะ
>>> a | b
{'x': 999}
สรุปการเลือกใช้
| เวอร์ชัน | แนะนำ | In-place | สร้างใหม่ |
|---|---|---|---|
| < 3.5 | update() | ✓ | copy() + update() |
| 3.5 - 3.8 | {**a, **b} | copy() + update() | ✓ |
| ≥ 3.9 | a | b | a |= b | a | b |