I would like to compare the value of a key from a JSON file to see if I have recorded data from todays date by seeing if the current date exists in the file so i don't record data from the same day. But this method seems to return False even if the date is present.
def removeJsonDupes(JSONcompleteFilePath, date):
with open(JSONcompleteFilePath, "r") as file:
dictionary = json.load(file)
if dictionary.get("date") is str(date):
dateRecorded = True
print(date, "is in the dict")
else:
dateRecorded = False
print(date, "is not in the dict")
return dateRecorded
JSON content:
{
"prices": [
{
"date": "07/12/21",
"prices": [
"2.49",
"1.61"
]
}
]
}
CodePudding user response:
The dictionary.get() looks for keys and you only have the prices key. The key date is in the value of the prices key.
CodePudding user response:
Building on @TheFlyingObject's answer, the date key you are trying to retrieve is nested inside the dictionary.
In order to access it, you need to first get the key it is stored in (that is the prices key which holds a list) and then iterate over the objects in that list.
For example:
for i in dictionary['prices']:
if i['date'] is str(date):
print(date, 'is in the dict')
return True
# we finished going over the list inside the prices key, and didn't find the date we were looking for
print(date, 'is not in the dict')
return False
CodePudding user response:
Change function as follows
def removeJsonDupes(JSONcompleteFilePath, date):
with open(JSONcompleteFilePath, "r") as file:
dictionary = json.load(file)
if dictionary.get('prices')[0]['date'] is str(date): # condition changed
dateRecorded = True
print(date, "is in the dict")
else:
dateRecorded = False
print(date, "is not in the dict")
return dateRecorded
Will give following result
dictionary = {
"prices": [
{
"date": "07/12/21",
"prices": [
"2.49",
"1.61"
]
}
]
}
removeJsonDupes(dictionary, "07/12/21")
# 07/12/21 is in the dict
removeJsonDupes(dictionary, "07/12/22")
# 07/12/22 is not in the dict
