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

السؤال

نشر

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

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...