Moatasm Elshahry نشر 16 أغسطس 2021 أرسل تقرير نشر 16 أغسطس 2021 أريد ان اعرف كيف يمكنني ترتيب القيم داخل القاموس بالقيمة value، كترتيب ال value بشكل تصاعدي او تنازلي علي سبيل المثال. 1 اقتباس
0 Ahmed Sharshar نشر 16 أغسطس 2021 أرسل تقرير نشر 16 أغسطس 2021 (معدل) اذا كنت تستخدم نسخة قديمة من بايثون، ربما عليك استخدام الكود التالي: import operator x = {0: 1, 2: 3, 4: 5, 2: 2, 0: 0} sorted_x = sorted(x.items(), key=operator.itemgetter(1)) وسيكون شكل الخرج كالتالي: {0: 0, 0: 1, 2: 2, 2: 3, 4: 5} وهنا قمنا بعمل ترتيب لل value بشكل تصاعدي. للعلم ايضا يمكنك ترتيب ال keys بدلا من ال values اذا اردت بنفس الطريقة كالتالي: import operator x = {0: 1, 2: 3, 4: 5, 2: 2, 0: 0} sorted_x = sorted(x.items(), key=operator.itemgetter(0)) لاحظ ان الفرق الوحيد بين الطريقتين هو تبديل 1 ب 0، حيث تعبر 0 عن keys بينما 1 عن values. اما اذا كنت تستخدم python 3.7 او احدث،تستطيع استخدام الكود التالي: >>> x = {0: 1, 2: 3, 4: 5, 2: 2, 0: 0} >>> {k: v for k, v in sorted(x.items(), key=lambda item: item[1])} {0: 0, 0: 1, 2: 2, 2: 3, 4: 5} او باستخدام dict كالتالي: >>> dict(sorted(x.items(), key=lambda item: item[1])) {0: 0, 0: 1, 2: 2, 2: 3, 4: 5} تم التعديل في 16 أغسطس 2021 بواسطة Ahmed Sharshar اقتباس
0 Ali Haidar Ahmad نشر 20 أغسطس 2021 أرسل تقرير نشر 20 أغسطس 2021 بشكل عام لا يمكن فرز القواميس، ولكن يمكنك إنشاء قائمة مرتبة منهم.. إضافةً لما قدمه أحمد يمكنك استخدام الدالة sorted بالشكل التالي: sorted(dic.items(), key=lambda z: z[1]) سيؤدي هذا إلى فرز القاموس حسب قيم كل إدخال داخل القاموس من الأصغر إلى الأكبر. لفرزها بترتيب تنازلي فقط أضف rever1se = T1rue: sorted(dic.items(), key=lambda z: z[1], reverse=True) انظر للمثال التالي: dic = {'one':1,'three':3,'five':5,'two':2,'four':4} dic = sorted(dic.items(), key=lambda z: z[1]) dic # [('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)] أو يمكنك استخدام القواميس المرتّبة OrderedDict وهي مطابقة للقواميس العادية باستثناء أنّها تتذكر ترتيب العناصر لحظة إدراجها فيها، بمعنى أنّه عند إضافة العناصر إلى قاموس مرتب، تعاد العناصر حسب ترتيب مفاتيحها عند إضافتها أول مرّة.: >>> # قاموس عادي غير مرتب >>> d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2} >>> # قاموس مرتب حسب المفاتيح >>> OrderedDict(sorted(d.items(), key=lambda t: t[0])) OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)]) >>> # قاموس مرتب حسب القيم >>> OrderedDict(sorted(d.items(), key=lambda t: t[1])) OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)]) >>> # قاموس مرتب حسب طول السلسلة النصية في المفاتيح >>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0]))) OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)]) تحافظ القواميس المرتّبة الجديدة على ترتيبها عند حذف العناصر منها، ولكن تُلحق المفاتيح الجديدة المضافة إلى نهاية القاموس مع المحافظة على ترتيب العناصر الباقية. حل مشكلتك: dic = {'one':1,'three':3,'five':5,'two':2,'four':4} from collections import OrderedDict OrderedDict(sorted(d.items(), key=lambda x: x[1])) """ OrderedDict([('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)]) """ اقتباس
السؤال
Moatasm Elshahry
أريد ان اعرف كيف يمكنني ترتيب القيم داخل القاموس بالقيمة value، كترتيب ال value بشكل تصاعدي او تنازلي علي سبيل المثال.
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.