ดังที่คนอื่น ๆ ได้กล่าวเอาไว้a.update(b)
สำหรับการพูดคุยa
และb
จะบรรลุผลตามที่คุณขอในคำถามของคุณ แต่ผมต้องการที่จะชี้ให้เห็นว่าหลายครั้งที่ฉันได้เห็นextend
วิธีการของการทำแผนที่วัตถุ / ชุดปรารถนาว่าในไวยากรณ์a.extend(b)
, a
's ค่าไม่ควรถูกเขียนทับโดยb
' s ค่า a.update(b)
เขียนทับa
's ค่าและอื่น ๆ extend
ไม่ได้เป็นทางเลือกที่ดีสำหรับ
โปรดทราบว่าบางภาษาเรียกวิธีนี้defaults
หรือinject
อาจเป็นวิธีการฉีดค่าของ b (ซึ่งอาจเป็นชุดของค่าเริ่มต้น) ในพจนานุกรมโดยไม่มีการเขียนทับค่าที่อาจมีอยู่แล้ว
แน่นอนคุณสามารถทราบง่ายๆว่าเกือบจะเป็นเช่นเดียวกับa.extend(b)
b.update(a); a=b
หากต้องการลบการมอบหมายคุณสามารถทำได้ดังนี้:
def extend(a,b):
"""Create a new dictionary with a's properties extended by b,
without overwriting.
>>> extend({'a':1,'b':2},{'b':3,'c':4})
{'a': 1, 'c': 4, 'b': 2}
"""
return dict(b,**a)
ขอขอบคุณที่ทอมเลย์สำหรับความคิดที่ว่าสมาร์ทใช้ผลข้างเคียงน้อยกว่าคอนสตรัคสำหรับdict
extend