MaxReve نشر 14 نوفمبر 2015 أرسل تقرير نشر 14 نوفمبر 2015 لنفترض أن لدي القائمة التالية التي تحتوي على قواميس:[ {"name": "Tom", "age": 10}, {"name": "Mark", "age": 5}, {"name": "Pam", "age": 7} ] عندما أبحث عن اسم مثل Pam أريد أن أتمكّن أولا من إيجاد العنصر الذي يحتوي على هذا الاسم ومن ثم أريد الحصول على جميع معلوماته، فكيف أستطيع فعل ذلك في بايثون؟ اقتباس
0 هشام رزق الله نشر 14 نوفمبر 2015 أرسل تقرير نشر 14 نوفمبر 2015 يمكنك البحث عن مفاتيح قاموس معين داخل قائمة من القواميس بطرق مختلفة، مثلا استخدم التعابير الموّلدة كما في المثال التالي:>>> dicts = [ ... { "name": "Tom", "age": 10 }, ... { "name": "Mark", "age": 5 }, ... { "name": "Pam", "age": 7 }, ... { "name": "Dick", "age": 12 } ... ] >>> (item for item in dicts if item["name"] == "Pam").next() {'age': 7, 'name': 'Pam'}لقد استخدمنا في هذا المثال حلقة التكرار for للتأكد من جميع العناصر من شرط تساوي قيمة الاسم مع الاسم الذي نبحث عنها ومن ثم يرجع لنا جميع المعلومات المتعلقة بهذا الاسم.كما يمكنك استخدام دالة filter مع lambda للبحث داخل جميع القواميس الموجودة في القائمة كما في المثال التالي:people = [ {'name': "Tom", 'age': 10}, {'name': "Mark", 'age': 5}, {'name': "Pam", 'age': 7} ] filter(lambda person: person['name'] == 'Pam', people)المصدر اقتباس
0 Ali Haidar Ahmad نشر 1 أبريل 2022 أرسل تقرير نشر 1 أبريل 2022 اقترح الطريقة التالية، التي ستعطيك معلومات كل الأشخاص الذين اسمهم Pam بدلاً من إعطائك أول واحد فقط: if __name__ == '__main__': dicts = [ {"name": "Tom", "age": 10}, {"name": "Mark", "age": 5}, {"name": "Pam", "age": 7} ] key = "name" val = "Pam" d = next((d for d in dicts if d.get(key) == val), None) print(d) # {'name': 'Pam', 'age': 7} أول من خلال الاسم فقط (بدون المفتاح): if __name__ == '__main__': dicts = [ {"name": "Tom", "age": 10}, {"name": "Mark", "age": 5}, {"name": "Pam", "age": 7} ] val = "Pam" d = next(filter(lambda person: person['name'] == val, dicts)) print(d) # {'name': 'Pam', 'age': 7} اقتباس
السؤال
MaxReve
لنفترض أن لدي القائمة التالية التي تحتوي على قواميس:
عندما أبحث عن اسم مثل Pam أريد أن أتمكّن أولا من إيجاد العنصر الذي يحتوي على هذا الاسم ومن ثم أريد الحصول على جميع معلوماته، فكيف أستطيع فعل ذلك في بايثون؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.