[FIXED] Anhängen aller For-Loop-Dikta an eine einzelne Liste

Ausgabe

Ich habe gerade Django gelernt und erhalte Daten von api und durchlaufe die jsonund hänge die Daten an die Liste an. aber wenn ich die .map()Funktion in verwende, werden reactdie Daten in der Liste (von der For-Schleife) angehängt

[
    {
        "results": {
            "id": 544,
            "name": "User_1",
        }
    },
    {
        "results": {
            "id": 218,
            "name": "User_2",
        }
    },
    {
        "results": {
            "id": 8948,
            "name": "User_3",
        }
    },
    {
        "results": {
            "id": 9,
            "name": "User_4",
        }
    },
]

Es hängt nicht an wie (wie ich will)

[
    results : [
        {
           "id": 544,
           "name": "User_1"
        },
        {
           "id": 218,
           "name": "User_2"
        },
        {
           "id": 8948,
           "name": "User_3"
        },
        {
           "id": 9,
           "name": "User_4"
        }
    ],
     "length_of_results": 25,
]

Ansichten.py

def extract_view(request):
    results_list = []

    // api url for explanation only
    get_response = "https://api.punkapi.com/v2/beers"

    if get_response.status_code == 200:
        for result in get_response.json():
            results_list.append({"results": result})

    results_list.append({"length_of_results": len(results_list)})

    return Response({"data": results_list})

Ich weiß, dass in der for-Schleife jedes Ergebnis bei jeder Iteration angehängt wird, aber ich möchte auch alle Antworten in der Ergebnisliste zuweisen . Weil ich nach der for-Schleife ein weiteres Feld anfügen werde.

Ich habe es viele Male versucht, aber es funktioniert immer noch nicht.

Lösung

Sie können es lösen, indem Sie mapüber die Liste iterieren:

dict(results=list(map(lambda x: x["results"], response)))

Voll funktionsfähiges Beispiel:

response = [
    {
        "results": {
            "id": 544,
            "name": "User_1",
        }
    },
    {
        "results": {
            "id": 218,
            "name": "User_2",
        }
    },
    {
        "results": {
            "id": 8948,
            "name": "User_3",
        }
    },
    {
        "results": {
            "id": 9,
            "name": "User_4",
        }
    },
]

results = dict(results=list(map(lambda x: x["results"], response)))
results["length_of_results"] = len(results["results"])

>> {'results': [{'id': 544, 'name': 'User_1'},
>>   {'id': 218, 'name': 'User_2'},
>>   {'id': 8948, 'name': 'User_3'},
>>   {'id': 9, 'name': 'User_4'}],
>>  'length_of_results': 4}


Beantwortet von –
Azhar Khan


Antwort geprüft von –
Mildred Charles (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like