为什么这是字符串而不是整数?两行代码看起来相似,但行为不同

2024-09-29 23:20:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我从wunderground API中提取此代码的数据,其中一行:

sunsethour = parsed_json ['moon_phase']['sunset']['hour']
sunsetminute = parsed_json ['moon_phase']['sunset']['minute']
print "\nSunset is at: %s:%s" % (sunsethour, sunsetminute)
hightide = parsed_json ['tide']['tideSummary']['date']
print (hightide)
f.close()

日落时间打印得很好,但高潮时间会产生错误“列表索引必须是整数,而不是str”

对python很陌生,只是想找到我的方法。请对我放轻松点,这里的一些对话似乎很吓人。在

{这里是编辑

截断示例:

^{pr2}$

Tags: 数据代码apijson时间parsedprinthour
1条回答
网友
1楼 · 发布于 2024-09-29 23:20:12

在没有看到源JSON的情况下,以下是我目前所能提供的最好的:

hightide = parsed_json ['tide']['tideSummary']['date']

这假设根元素和两个子元素都是字典,可以通过字符串键访问。显然,这些数据元素之一是列表而不是字典:

^{pr2}$

所有这些都必须产生词典。查看这些值,看看是否有实际的列表:

aList = ['1','2','3']
aDict = {'1':1, '2':2, '3':3}

>>> aList['1']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str

>>> aDict['1']
1

更新

从您对json结构的更新来看,parsed_json ['tide']['tideSummary']导致了您的问题。tideSummary的值是一个列表,尽管您的数据是空的,所以我不确定里面是什么。在

如果是包含日期值的摘要dict列表,则可以执行以下操作:

# assume:  parsed_json['tide']['tideSummary'] = [{"date":"value"}]

for summary in parsed_json['tide']['tideSummary']:
    print summary['date']

。。。同样,假设它们是{"date":"value"}的列表

相关问题 更多 >

    热门问题