يشرح هذا القسم كيفية إضافة عناصر جديدة إلى القاموس (كائن نوع ديكت) أو تحديث قيمة عنصر موجود في بايثون. من الممكن أيضًا ربط (ضم ، دمج) قواميس متعددة.
- قم بإضافة وتحديث العناصر إلى القاموس عن طريق تحديد المفاتيح.
- تسلسل (دمج) قواميس متعددة: تحديث () ، | عامل التشغيل | = عامل التشغيل
- قم بإضافة أو تحديث عناصر متعددة: update () ، | = عامل التشغيل
قم بإضافة وتحديث العناصر إلى القاموس عن طريق تحديد المفاتيح.
يمكنك إضافة / تحديث عناصر القاموس بالطريقة التالية.
كائن القاموس [مفتاح] = القيمة
عند تحديد مفتاح غير موجود ، تتم إضافة عنصر جديد ، وعند تحديد مفتاح موجود ، يتم تحديث القيمة الموجودة (الكتابة فوقها).
d = {'k1': 1, 'k2': 2}
d['k3'] = 3
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3}
d['k1'] = 100
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3}
إذا كنت لا تريد تحديث قيمة المفتاح الموجود ، فاستخدم الطريقة setdefault ().
ربط (دمج) قواميس متعددة: تحديث () ، | عامل التشغيل | = عامل التشغيل
update()
إذا تم تحديد كائن قاموس آخر كوسيطة لطريقة تحديث كائن القاموس () ، فستتم إضافة جميع عناصره.
إذا تداخل المفتاح مع مفتاح موجود ، فسيتم استبداله بقيمة القاموس المحددة في الوسيطة.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
d1.update(d2)
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
من الخطأ تحديد قواميس متعددة في وسيطة update ().
d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}
# d1.update(d2, d3)
# TypeError: update expected at most 1 arguments, got 2
كما تم توضيحه لاحقًا ، يمكن لـ update () إضافة عناصر جديدة كوسائط للكلمات الرئيسية (key = value) ، لذا فقط أضف ** إلى القاموس وقم بتوسيع كل عنصر كمتوسط كلمة رئيسية وتمريره.
d1.update(**d2, **d3)
print(d1)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}
كما في الأمثلة السابقة ، سيؤدي استخدام update () إلى تحديث كائن القاموس الأصلي.
إذا كنت تريد إنشاء قاموس جديد من خلال دمج قواميس متعددة ، فاستخدم {** d1، ** d2} (من Python 3.5) أو deb (** d1، ** d2).
في Python 3.9 والإصدارات الأحدث ، من الممكن أيضًا إنشاء قاموس جديد باستخدام | وصف المشغل التالي.
| عامل التشغيل ، | = عامل التشغيل (Python 3.9 والإصدارات الأحدث)
منذ Python 3.9 ، من الممكن دمج قواميسين باستخدام | المشغل أو العامل. عندما يكون لقواميسين نفس المفتاح ، يكون للقيمة الموجودة على اليمين الأولوية.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
print(d1 | d2)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
print(d2 | d1)
# {'k1': 1, 'k3': 3, 'k4': 4, 'k2': 2}
| من الممكن أيضًا دمج قواميس متعددة باستخدام سلسلة من العوامل.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}
print(d1 | d2 | d3)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}
+ كما هو الحال مع update () ، يتم تحديث الكائن الموجود على الجانب الأيسر.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
d1 |= d2
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
قم بإضافة أو تحديث عناصر متعددة: update () ، | = عامل التشغيل
update()
عندما يتم تحديد وسيطة الكلمة الأساسية = القيمة في طريقة update () ، سيتم إضافة مفتاح المفتاح وقيمة القيمة. إذا تداخل المفتاح مع مفتاح موجود ، فسيتم استبداله بالقيمة المحددة في الوسيطة.
d = {'k1': 1, 'k2': 2}
d.update(k1=100, k3=3, k4=4)
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
من الممكن أيضًا تحديد قائمة (مفتاح ، قيمة) كوسيطة لطريقة update (). إذا تداخل المفتاح مع مفتاح موجود ، فسيتم استبداله بالقيمة المحددة كوسيطة.
d = {'k1': 1, 'k2': 2}
d.update([('k1', 100), ('k3', 3), ('k4', 4)])
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
بالاشتراك مع وظيفة zip () ، يمكن إضافة عناصر من قائمة مفاتيح وقائمة قيم.
d = {'k1': 1, 'k2': 2}
keys = ['k1', 'k3', 'k4']
values = [100, 3, 4]
d.update(zip(keys, values))
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
| = عامل التشغيل (Python 3.9 والإصدارات الأحدث)
باستخدام عامل التشغيل | = ، يمكن تحديد قائمة (مفتاح ، قيمة) على الجانب الأيمن.
d = {'k1': 1, 'k2': 2}
d |= [('k1', 100), ('k3', 3), ('k4', 4)]
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
لاحظ أن تحديد قائمة مع | عامل التشغيل سيؤدي إلى حدوث خطأ. يتم دعم عمليات القاموس إلى القاموس فقط.
# print(d | [('k1', 100), ('k3', 3), ('k4', 4)])
# TypeError: unsupported operand type(s) for |: 'dict' and 'list'