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

عمل قاموس قابل للترتيب sortable dictionary في بايثون

Adam Ebrahim

السؤال

أريد أن أقوم بعمل قاموس يحتوي على بعض العناصر كالتالي:

{2:True, 1:False, 4:None, 3:”Hi”}

ومن المفترض أن يتم تحويله إلى التالي:

{1:False, 2:True, 3:”Hi”, 4:None}

حاولت البحث عن حل لهذه المشكلة أكثر من مرة ولكن كل الحلول التي وجدها تستخدم الدالة sorted التي تقوم بإعادة tuple وليس قاموس dictionary

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

Recommended Posts

  • 1

بداية نقوم بانشاء قاموس ليكن اسمه D1

D1 = {2:3, 1:89, 4:5, 3:0}

ثم نقوم بانشاء قاموس فارغ

sort_dic = {}

ثم نقوم بعمل حلقة تكرار على القاموس الأول وهو مرتب بناء على ال key, وبداخل الحلقة نقوم بعمل update للقاموس الفارغ بتعديل قيمه كالتالي

for i in sorted(D1):
     sort_dic.update({i:D1[i]})

 لو حاولنا طباعة القاموس بعد الترتيب سوف يكون الشكل كالتالي

print(sort_dic)


#{1: 89, 2: 3, 3: 0, 4: 5}

 

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

  • 0

بإمكانك إستخدام الدالة dict مع الدالة sorted للوصول إلى ما تريد:

d = {2:True, 1:False, 4:None, 3:"Hi"}

sortedD = dict(sorted(d.items()))

print(sortedD) # {1: False, 2: True, 3: 'Hi', 4: None}
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك أن تستعمل الكائن OrderedDict الموجود في مكتبة collections حيث يقوم بترتيب كل عناصر القاموس بالشكل التالي:

>>> import collections
>>> x = {2:True, 1:False, 4:None, 3:"Hi"}
>>> sortedX = collections.OrderedDict(sorted(d.items()))
>>> sortedX
OrderedDict([(1, False), (2, True), (3, 'Hi'), (4, None)])
>>> sortedX[1]
False
>>>

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...