Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

reformatage k,v de dictionaire a partir de fichier json

0 votes

Je voudrai arriver à ceci:

resultat = {"potatoe":{"stock": 17,"price": 3},"meat":{"stock": 8,"price": 80}}

en partant de ce fichier data.json:

[
    {
        "matos": "potatoe",
        "stock": "17",
        "price": "3"
    },
    {
        "matos": "meat",
        "stock": "8",
        "price": "80"
    }        
]
demandé 12-Jul par buffalo974 (2,886 points)
edité 13-Jul par buffalo974

2 Réponses

–1 vote
 
Meilleure réponse
#!/usr/bin/python3
#-*- coding: utf-8 -*-

import json

merchandise_list_of_dicts = json.load(open('data.json', 'r'))

print(merchandise_list_of_dicts)
print(type(merchandise_list_of_dicts))

resultat = {}

for dico in merchandise_list_of_dicts:
    print("\n -----------------------------  ")

    resultat[dico["matos"]] = {"stock":int(dico["stock"]), "price":int(dico["price"])}

    print(dico)

    for k,v in dico.items():
        print(k,"  :  ",v)


print("\n\n\n _________________________________________  ")
print(resultat)
répondu 13-Jul par buffalo974 (2,886 points)

pas besoin de .update()

+1 vote
 import sys


 def read_json(file_name):
     with open(file_name) as fd:
         data = json.load(fd)
         return {
             line["matos"]: {"stock": int(line["stock"]), "price": int(line["price"])}
             for line in data
         }
     return {}


 if __name__ == "__main__":
     print(read_json(sys.argv[1]))

Pourquoi pas avec un dict comprehension

répondu 16-Jul par ptank (360 points)
...