我正在尝试接受一个json对象作为输入,并找到符合特定条件的项目计数 . json对象结构在嵌套的python字典中,例如:
businesses= ["{\"hours\":
{
\"tuesday\": [[\"11:30\", \"23:00\"]],
\"thursday\": [[\"11:30\", \"23:00\"]],
\"wednesday\": [[\"11:30\", \"23:00\"]],
\"friday\": [[\"11:30\", \"23:00\"]],
\"sunday\": [[\"9:00\", \"23:00\"]],
\"monday\": [[\"11:30\", \"23:00\"]],
\"saturday\": [[\"11:30\", \"23:00\"]]
},
\"name\": \"XYZ\"
}"]
该结构中将有多个项目 . 我遇到的问题是写入for循环进入关卡,并搜索在星期日上午10点之前开放的商家 .
所以这样的事情:
def count_businesses(object):
for i in object:
for j in i:
....
但是当我达到那个级别时,它似乎输出了字典的每一个字母 . 此外,我不知道如何编写函数来查找它打开的日期和时间,这对我来说必须在星期日上午10点之前找到,并返回计数 . 时间位于此对象中字典内的数组中,如图所示 .
任何帮助,将不胜感激!
1 回答
似乎python词典之间存在一些混淆 . 您在
businesses
中的数组中的数据实际上是JavaScript Object Notation(JSON)中的字符串,python将其视为字符串 . 要将它用作python字典,您需要使用python的json
库进行转换 . 转换看起来像,您提供的对象是一个JSON字符串数组,如
python字典的数组如下所示
所以,你看到它输出每个字母的原因是因为你在迭代字符串,而不是python字典 . 当python迭代一个字符串时,它会查看每个字符 . 就像下面这样 .
至于函数,你需要确保在进行时间比较时,使用python时间对象而不是字符串,因为这样可以准确地比较时间 . 我不完全确定为什么时间列在嵌套数组中,例如
[["11:30","23:00"]]
,因此如果数据的格式与其他业务的格式不同,您可能需要修改以下函数 .这是一个描述您需要的功能 .