Wie, um sicherzustellen, dass ein python dict-Schlüssel klein geschrieben werden?
Habe ich ein dict, das möchte ich umwandeln in JSON mit simplejson.
Wie kann ich sicherstellen, dass alle Schlüssel von meinem dict klein geschrieben ?
{
"DISTANCE": 17.059918745802999,
"name": "Foo Bar",
"Restaurant": {
"name": "Foo Bar",
"full_address": {
"country": "France",
"street": "Foo Bar",
"zip_code": "68190",
"city": "UNGERSHEIM"
},
"phone": "+33.389624300",
"longitude": "7.3064454",
"latitude": "47.8769091",
"id": "538"
},
"price": "",
"composition": "",
"profils": {},
"type_menu": "",
"ID": ""
},
EDIT: Danke, alles hatte, um einen Blick auf meine Frage, ich bin traurig, dass ich nicht erklären detailliert, warum ich wollte das. Es war der patch JSONEmitter
von django-piston
.
- Um sicherzustellen, dass Sie klein geschrieben werden, Sie müssen in Kleinbuchstaben geschrieben sein. Erstellen Sie ein dict mit Kleinbuchstaben den Tasten.
- Was meinst du mit "sicherstellen"? Haben Sie und die bestehenden dict und wollen Sie prüfen, ob alle Schlüssel klein geschrieben werden? Oder konvertieren Sie Sie alle zu Kleinbuchstaben? Oder möchten Sie erstellen eine Art von dict, die erlaubt nur Kleinbuchstaben Tasten (beim einlegen)?
- Wie Sie im Beispiel sehen können, einige der Schlüssel sind nicht in Kleinbuchstaben. Ich möchte sicher sein, dass jedes JSON-Schlüssel sind Kleinbuchstaben.
- "einige Schlüssel sind nicht in Kleinbuchstaben" Warum nicht? War dein editor kaputt? Was hielt Sie von Sie zu beheben?
- Das Wörterbuch wird automatisch generiert
django-piston
und um sicher zu sein, dass die Modelle Felder umschreiben, mit der cls_method der handler, die ich brauche, um Sie in Großbuchstaben. Wenn ich konvertieren Sie die dictionnary im JSON-Format, die ich brauche, um sicherzustellen, dass die Schlüssel sind in Kleinbuchstaben geschrieben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
dict(...)
-->d = {k.lower(): v for k, v in d.items()}
Hier ist eine Lösung, die verbietet das setzen eines Kleinbuchstaben-Taste:
__setitem__
tundict.__setitem__(self, key.lower(), val)
. Das problem mit diesem Ansatz im Allgemeinen, dass der Konstruktor und die.update
benutzen Sie nicht setitem - Sie brauchen, um, dass die Arbeit, oderLowerCaseDict({'Foo': 1, 'bar': 2})
würde nicht handeln, wie erwartet (nicht Kleinbuchstaben es für meine Art oder nicht zu erhöhen ein TypeError für Ihren Weg).Hier ist meine Lösung :
Da Sie nicht erwähnt haben klar und deutlich, was Sie tun möchten:
Konvertieren Sie alle Tasten, um Kleinbuchstaben:
Check für Schlüssel:
Wenn Sie nur wollen, um überprüfen, wenn Sie alle Kleinbuchstaben (Ihre Wortwahl, mit "sicherzustellen", ist nicht klar, aber ich vermute, dies ist nicht, was Sie wollen), können Sie tun, kompakt in einer Zeile:
Hier ist eine komplette Lösung
Oder wenn Sie wollen finden Sie unter den code: