Bienvenue sur IndexError.

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

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-2019 par buffalo974 (2,942 points)
edité 13-Jul-2019 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-2019 par buffalo974 (2,942 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-2019 par ptank (370 points)
...