On 20/01/2023 15:29, Dino wrote:

let's say I have this list of nested dicts:

[
  { "some_key": {'a':1, 'b':2}},
  { "some_other_key": {'a':3, 'b':4}}
]

I need to turn this into:

[
  { "value": "some_key", 'a':1, 'b':2},
  { "value": "some_other_key", 'a':3, 'b':4}
]
Assuming that I believe the above, rather than the code below, this works:

listOfDescriptors = [
    { **  (L := list(D.items())[0])[1], **{'value' : L[0] } }
    for D in origListOfDescriptors]

I believe that from Python 3.9 onwards this can be written more concisely as:

listOfDescriptors = [
    { (L := list(D.items())[0])[1] } | {'value' : L[0] }
    for D in origListOfDescriptors]     # untested

Best wishes
Rob Cliffe


I actually did it with:

listOfDescriptors = list()
for cd in origListOfDescriptors:
    cn = list(cd.keys())[0] # There must be a better way than this!
    listOfDescriptors.append({
        "value": cn,
        "type": cd[cn]["a"],
        "description": cd[cn]["b"]
    })

and it works, but I look at this and think that there must be a better way. Am I missing something obvious?

PS: Screw OpenAPI!

Dino

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to