• 0

كيف أقوم بعمل قاموس dictionary في بايثون

لدي مصفوفة على الشكل :

months=['January','February','March','April','May','June','July','August','September','October','November','December']

واريد تحويلها لتظهر على الشكل :

months = {1:'January', 2:'February',....}

قمت باستخدام enumerate()  لكنها لم تفلح معي رغم اني اعرف انها يمكنها ان تفعل هذا فما الحل؟

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكن ان تقوم فقط باستخدام الدالة enumerate() بشكل خاطئ، لو انك تريد استخدامها يمكنك تجربة هذا الكود:

months =['January','February','March','April','May','June','July','August','September','October','November','December']

d_months = {}

for i, month in enumerate(months):
    d_months[i+1] = month

print(d_months)

يجب ان يظهر الخرج بالشكل التالي:

{1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June', 7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'}

لاحظ اننا استخدمنا i+1 وذلك لاننا نبدأ من المكان 0 ونريد ان نضم اخر شهر لدينا كذلك، لذا فقيمة i+1 =12 وهو عدد الشهور المراد ضمها.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

تستخدم enumerate عندما تريد معرفة ال index لكل عنصر من العناصر
فهي تحول كل عنصر في المصفوفة من x الى (index, x)
في مثالك:

months =['January','February','March','April','May','June','July','August','September','October','November','December']

print (list(enumerate(months))) // نطبع الناتج بعد تحويله لقائمة

يكون الخرج

[(0, 'January'), (1, 'February'), (2, 'March'), (3, 'April'), (4, 'May'), (5, 'June'), (6, 'July'), (7, 'August'), (8, 'September'), (9, 'October'), (10, 'November'), (11, 'December')]

وهو غير بنية القاموس التي تريدها

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكنك استعمال هذا الكود لا يتطلب الدالة enumerate() 

months_list = ['January','February','March','April','May','June','July','August','September','October','November','December']

months = {}

for n in range(1, len(months_list)):
    months[n] = months_list[n]
    
print(months)

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

إضافة للإجابة التي قدمها أحمد يمكنك القيام بذلك كالتالي:

months=['January','February','March','April','May','June','July','August','September','October','November','December']
def Convert(lst):
	res_dct = {lst[i]: i+1 for i in range(0, len(lst))}
	return res_dct
print(Convert(months))
# {'January': 1, 'February': 2, 'March': 3, 'April': 4, 'May': 5, 'June': 6, 'July': 7, 'August': 8, 'September': 9, 'October': 10, 'November': 11, 'December': 12}

.أو من خلال الدالة zip:

months=['January','February','March','April','May','June','July','August','September','October','November','December']
def Convert(l1):
	d1=zip(l1,[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])
	return dict(d1)
print(Convert(months))
# {'January': 1, 'February': 2, 'March': 3, 'April': 4, 'May': 5, 'June': 6, 'July': 7, 'August': 8, 'September': 9, 'October': 10, 'November': 11, 'December': 12}

أو zip_longest:

from itertools import zip_longest
months=['January','February','March','April','May','June','July','August','September','October','November','December']
def Convert(l1):
	d1=zip_longest(l1,[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])
	return dict(d1)
print(Convert(months))
"""
{'January': 1, 'February': 2, 'March': 3, 'April': 4, 'May': 5, 'June': 6, 'July': 7, 'August': 8, 'September': 9, 'October': 10, 'November': 11, 'December': 12}
"""

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

بسيط وعملي

months=['January','February','March','April','May','June','July','August','September','October','November','December']

months= {q+1: months[q] for q in range(len(months))}

print(months)


# {1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June', 7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'}

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن