إضافة عناصر إلى القاموس والانضمام إلى القواميس في بايثون

اعمال

يشرح هذا القسم كيفية إضافة عناصر جديدة إلى القاموس (كائن نوع ديكت) أو تحديث قيمة عنصر موجود في بايثون. من الممكن أيضًا ربط (ضم ، دمج) قواميس متعددة.

  • قم بإضافة وتحديث العناصر إلى القاموس عن طريق تحديد المفاتيح.
  • تسلسل (دمج) قواميس متعددة: تحديث () ، | عامل التشغيل | = عامل التشغيل
  • قم بإضافة أو تحديث عناصر متعددة: 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'