Comment filtrer un fichier json pour n'afficher que les informations dont j'ai besoin?
Pour commencer, je veux dire que je suis assez nouveau dans Python et que je travaille avec JSON, désolé si cette question a été posée auparavant et que je l'ai négligée .
J'ai un fichier JSON qui ressemble à ceci:
# Transform json input to python objects
with open("StorePriceList.json") as input_file:
input_dict = json.load(input_file)
# Filter python objects with list comprehensions
output_dict = [x for x in input_dict if ] #missing logical test here.
# Transform python object back into json
output_json = json.dumps(output_dict)
# Show json
print(output_json)
J'ai besoin de filtrer ce fichier pour afficher uniquement Item et Prix , comme
[
{
"Item": 10,
"Price": 8.90
},
{
"Item": 15,
"Price": 2.60
}
]
J'ai un code qui ressemble à ceci:
[
{
"Store": 417,
"Item": 10,
"Name": "Burger",
"Modifiable": true,
"Price": 8.90,
"LastModified": "09/02/2019 21:30:00"
},
{
"Store": 417,
"Item": 15,
"Name": "Fries",
"Modifiable": false,
"Price": 2.60,
"LastModified": "10/02/2019 23:00:00"
}
]
Quel test logique dois-je faire ici pour faire ça?
3 Réponses :
Disons que nous pouvons utiliser la compréhension de dict, alors ce sera
output_dict = [{k:v for k,v in x.items() if k in ["Item", "Price"]} for x in input_dict]
Merci, exactement ce dont j'avais besoin.
import pprint
with open('data.json', 'r') as f:
qe = json.load(f)
list = []
for item in qe['<your data>']:
query = (f'{item["Item"]} {item["Price"]}')
print("query")
Vous pouvez également le faire comme ceci :)
>>> [{key: d[key] for key in ['Item', 'Price']} for d in input_dict] # you should rename it to `input_list` rather than `input_dict` :)
[{'Item': 10, 'Price': 8.9}, {'Item': 15, 'Price': 2.6}]