اذهب إلى المحتوى
  • 0

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

Moatasm Elshahry

السؤال

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

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

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

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

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

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

Recommended Posts

  • 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'}

 

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...