بکندباز

چطور در پایتون مقادیر مختلف از یک کلید یکسان را با هم مرج کنیم؟

چند دیکشنری مختلف در پایتون داریم که ممکن است کلید های مشترکی داشته باشند. می خواهیم چند دیکشنری را به یک دیکشنری با لیستی از مقادیر برای کلید های مشترک ترکیب کنیم.

#لیست اولیه
test_list = [{'a' : 2, 'b' : 4, 'c' : 6}, 
             {'a' : 5, 'c' : 7, 'd' : 8},
             {'x' : 10}]
#خروجی
out_dict = {'a' : [2,5] , 'b' : 4, 'c' : [6,7], 'd':8, 'x': 10}

روش شماره 1: استفاده از setdefault() + حلقه
این کار را می توان با استفاده از یک حلقه تو در تو و دریافت هر عنصر از دیکشنری و ایجاد یک لیست جدید برای کلید جدید یا اضافه کردن مقادیر در هنگام وقوع کلید مشابه انجام داد.

# Python3 code to demonstrate working of
# Merge Python key values to list
# Using setdefault() + loop
 
# Initialize list
test_list = [{'bkeb' : 2, 'is' : 4, 'best' : 6}, 
             {'it' : 5, 'is' : 7, 'best' : 8},
             {'CS' : 10}]
 
# Printing original list
print("The original list is : " + str(test_list))
 
# using setdefault() + loop
# Merge Python key values to list
res = {}
for sub in test_list:
    for key, val in sub.items(): 
        res.setdefault(key, []).append(val)
 
# printing result 
print("The merged values encapsulated dictionary is : " + str(res))

خروجی:

The original list is : [{'is': 4, 'bkeb': 2, 'best': 6}, {'it': 5, 'is': 7, 'best': 8}, {'CS': 10}]
The merged values encapsulated dictionary is : {'is': [4, 7], 'it': [5], 'bkeb': [2], 'CS': [10], 'best': [6, 8]}

روش شماره 2: استفاده از list comprehension + dictionary comprehension
ترکیب این دو مورد را می توان برای انجام این کار خاص استفاده کرد. یک کد تک خطی ارائه می دهد که می تواند برای این کار استفاده شود.

# Python3 code to demonstrate working of
# Merge Python key values to list
# Using list comprehension + dictionary comprehension
 
# Initialize list
test_list = [{'bkeb' : 2, 'is' : 4, 'best' : 6}, 
             {'it' : 5, 'is' : 7, 'best' : 8},
             {'CS' : 10}]
 
# Printing original list
print("The original list is : " + str(test_list))
 
# using list comprehension + dictionary comprehension
# Merge Python key values to list
res = {key: list({sub[key] for sub in test_list if key in sub})
      for key in {key for sub in test_list for key in sub}}
 
# printing result 
print("The merged values encapsulated dictionary is : " + str(res))

خروجی:

The original list is : [{'is': 4, 'bkeb': 2, 'best': 6}, {'it': 5, 'is': 7, 'best': 8}, {'CS' : 10}]
The merged values encapsulated dictionary is : {'is': [4, 7]، 'it': [5]، 'bkeb': [2]، 'CS': [10]، 'best': [6، 8]}
backendbaz

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*