dict1 = { 1: {"a": {"a"}} ، 2: {"B": {"B"}} } dict2 = { 2: {"C": {"C"}} ، 3: {"D": {"D"}} }
الإخراج المطلوب هو:dict3 = { 1: {"a": {"a"}} ، 2: {"B": {"B"} ، "C": {"C"}} ، 3: {"D": {"D"}} }
dict1 = { 1: {"a": {"A"}}, 2: {"b": {"B"}} } dict2 = { 2: {"c": {"C"}}, 3: {"d": {"D"}} }لتحقيق هذا الاندماج العميق ، يمكننا الاستفادة من دالة عودية:
def merge (a: dict ، b: dict ، path = []): للمفتاح في ب: إذا كان المفتاح في: إذا كان Isinstance (A [Key] ، Dict) و Isinstance (B [Key] ، Dict): دمج (A [KEY] ، B [KEY] ، PATH [STR (KEY)])) آخر: A [KEY] = B [KEY] آخر: A [KEY] = B [KEY] أعد A
dict1 = { 1: {"a": {"A"}}, 2: {"b": {"B"}} } dict2 = { 2: {"c": {"C"}}, 3: {"d": {"D"}} }تأخذ هذه الوظيفة قواميس ، A و B ، ومسار يتتبع الموقع الحالي في الهيكل المتداخل. يتكرر من خلال المفاتيح في B ويتحقق مما إذا كان المفتاح المقابل موجودًا في A. إذا كانت القيم الموجودة في هذا المفتاح كلا القواميس ، فإنها تستدعي وظيفة الدمج بشكل متكرر لدمج تلك القواميس الفرعية. خلاف ذلك ، فإنه يقوم بتحديث القيمة في القيمة A من b.
بالنسبة للموائل المذكورة أعلاه ، ستنتج دالة الدمج النتيجة المطلوبة:
def merge(a: dict, b: dict, path=[]): for key in b: if key in a: if isinstance(a[key], dict) and isinstance(b[key], dict): merge(a[key], b[key], path [str(key)]) else: a[key] = b[key] else: a[key] = b[key] return a
ملاحظة:
هذه الوظيفة تحول القاموس الأول ، إذا كنت ترغب في الحفاظ على محتوياتها ، فيمكنك إنشاء نسخة قبل الاندماج ، على سبيل المثال ، دمج (DICT (A) ، B).
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3