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

كيف يمكنني تحويل مصفوفتين الى قاموس واحد في بايثون ؟

Jafar Ali

السؤال

لدي مصفوفتان واحدة تحتفظ بأسماء اشخاص و الأخرى تحتفظ بأرقام الهواتف هكذا مثلًا :

people = ['Ali', 'Ahmad', 'Khalid']

phones = ['01234567', '09876543', '01357890']

وعندما اريد الربط بين الشخص و رقم هاتفه علي ان اقوم بعمل عملية تكرار متزامنه حتى لا يختلط شخص مع رقم هاتف الصحيح :

for i in range(len(people)):
    print(people[i] + " have the phone " + phones[i])


'''
النتيجة :
Ali have the phone 01234567
Ahmad have the phone 09876543
Khalid have the phone 01357890

'''

كيف يمكنني عمل قاموس من هذه المصفوفتان لربط اسم الشخص كمفتاح و القيمة هي رقم الهاتف ؟

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

Recommended Posts

  • 0

اولا فلنتعرف على طريقة إنشاء قاموس و تعين قيمة له :

people_phones = {} # هكذا نقوم بعمل قاموس فارغ

بعدها لعمل مفتاح جديد و قيمة له :

people_phones['Ali'] = '09876543'

هكذا انت قمت بعمل مفتاح جديد مع قيمة '09876543' الان ما عليك الا ان تنشىء حلقة تكرار للمرور على المصفوفتان و التعين هكذا :

people = ['Ali', 'Ahmad', 'Khalid']

phones = ['098765', '0123456', '08643179']

people_phones = {}

#نقوم هنا بمرور على المصفوفات على حسب عدد العناصر
for i in range(len(a)): 

	# هنا نقوم بتعين قيمة المفتاح من people
	# و قيمة الهواتف من phones
    people_phones[people[i]] =phones[i] 

في بايثون هنالك حتى طريقة اسهل من ذلك ! :

# zip يقوم بعمل مصفوفة 
#في مصفوفة داخلية  phones واخرى من  people هذه المصفوفة تحمل كل قيمة واحدة من 

#يقوم بتحويل الى قاموس dict و من ثم 
people_phones = dict(zip(people, phones))
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك استخدام for in بهذه الطريقة والاعتماد على طول قائمة الأشخاص بما انه في حالتك لديهما نفس الطول 

people = ['Ali', 'Ahmad', 'Khalid']

phones = ['098765', '0123456', '08643179']

list_len = len(phones)

print(list_len)
# 3

people_phone = {people[i]: phones[i] for i in range(len(list_len))}


print(people_phone)
# {'Ali': '098765', 'Ahmad': '0123456', 'Khalid': '08643179'}

print(people_phone['Ali'])
# 098765

لكن في حالتك أفضل استخدام هو استخدام ال zip الذي ذكره الأخ عزام في اجابته 

people_phones = dict(zip(people, phones))

 

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

  • 0

يمكننا إنشاء تابع يقوم بهذا العمل لتسهيل الأمر خصوصا في المشاريع الكبيرة، يقوم التابع بإنشاء مصفوفة جديدة تأخذ قيم string ك مفاتيح لها، مثل

array[“KeyString”] = myWord

و من ثم تنشىء قاموس جديد مبني على هذه المصفوفة و تعيده:

#التابع

def createDicFrom2Arrays (keys, vals):

  returnDic = {} # القاموس الذي يجب ان نعيده


  #تعيين القيم للمصفوفة

  for i in range(len(keys)): 

    returnDic[keys[i]] = vals[i]

  returnDic = dict(zip(keys, vals))

  return returnDic # اعادة القاموس


#المصفوفات المدخلة

people = ['Ali', 'Ahmad', 'Khalid']

numbers = ['01234567', '09876543', '01357890']


# نقوم بتجريب التابع

createDicFrom2Arrays (people, numbers)

 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...