"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يختلف ترتيب المفاتيح في إخراج JSON الخاص بي عن الترتيب في قاموس Python الخاص بي باستخدام `json.dumps`؟

لماذا يختلف ترتيب المفاتيح في إخراج JSON الخاص بي عن الترتيب في قاموس Python الخاص بي باستخدام `json.dumps`؟

نشر في 2025-02-06
تصفح:144

Why is the order of keys in my JSON output different from the order in my Python dictionary using `json.dumps`?

.Dumps "لتحويل قائمة القواميس إلى JSON. ومع ذلك ، فقد لاحظت أن ترتيب المفاتيح داخل كل قاموس ليس كما هو متوقع. على وجه التحديد ، تحتاج إلى أن تظهر المفاتيح بترتيب "id" و "name" و "timezone". 3.7) وكائنات JSON هي مجموعات غير مرتبة. هذا يعني أن ترتيب المفاتيح في القاموس أو كائن JSON غير مضمون. "json.dumps" لفرز المفاتيح في الإخراج JSON. على سبيل المثال:

استيراد JSON Countre print (json.dumps (البلدان ، sort_keys = true))

سيؤدي هذا إلى إخراج json بالمفاتيح بالترتيب التالي:

[ {"id": 1 ، "name": "Mauritius" ، "Timezone": 4} ، {"id": 2 ، "name": "France" ، "Timezone": 2} ، {"id": 3 ، "name": "England" ، "Timezone": 1} ، {"id": 4 ، "name": "USA" ، "TimeZone": -4} ]

الحل 2: استخدام orderdict

إذا كنت بحاجة إلى طلب محدد للمفاتيح ، فيمكنك استخدام فئة "collections.orderDECT". يحافظ OrderDict على ترتيب المفاتيح المدرجة فيه. على سبيل المثال:

import json

countries.append({"id":row.id,"name":row.name,"timezone":row.timezone})
print(json.dumps(countries, sort_keys=True))

في Python 3.6 وبعد ذلك ، يتم الحفاظ على ترتيب وسيطات الكلمات الرئيسية في القواميس. هذا يعني أنه يمكنك تحقيق نفس النتيجة مثل استخدام orderdict عن طريق تحديد المفاتيح بالترتيب المطلوب عند إنشاء القاموس:
[
   {"id": 1, "name": "Mauritius", "timezone": 4}, 
   {"id": 2, "name": "France", "timezone": 2}, 
   {"id": 3, "name": "England", "timezone": 1}, 
   {"id": 4, "name": "USA", "timezone": -4}
]

row.name ، "TimeZone": row.timezone} سيحافظ هذا تلقائيًا على ترتيب المفاتيح في الإخراج json.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3