为什么会出现这样的错误:TypeError:元组索引必须是整数或切片,而不是s

2024-10-03 09:09:07 发布

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

我有这样一句话:

{'d': {'BidVolume1': 0, 'BidPrice1': 0.0, 'BidVolume2': 0, 'BidPrice2': 0.0, 'BidVolume3': 0, 'BidPrice3': 0.0, 'BidVolume4': 0, 'BidPrice4': 0.0, 'BidVolume5': 0, 'BidPrice5': 0.0, 'AskTotalVolume': 0}}

当我尝试这个代码时

^{pr2}$

我收到以下错误消息:

TypeError: tuple indices must be integers or slices, not str

我要做的是对程序说,用BidTotalVolume键给我这个项的值。在

我该怎么做?为什么我会收到这个错误消息?在


Tags: 代码消息错误pr2bidprice4bidprice2bidvolume5bidvolume3
3条回答

正如评论中建议的那样,使用 for key, values in d.items():as items()返回(key,value)的元组。对于仅键,可以使用keys(),对于仅值,可以使用values()

首先,字典中似乎没有bidtotalvolume键。在

第二,你想做的是或多或少:

print(r['d'][key]['BidTotalVolume']) 

你的字典没有3个级别,所以这永远行不通。在

我想你的意思是:

^{pr2}$

这将失败,因为BidTotalVolume不在词典中。但只要有钥匙就可以了。在

r[d]{'BidVolume1': 0, 'BidPrice1': 0.0, 'BidVolume2': 0, 'BidPrice2': 0.0, 'BidVolume3': 0, 'BidPrice3': 0.0, 'BidVolume4': 0, 'BidPrice4': 0.0, 'BidVolume5': 0, 'BidPrice5': 0.0, 'AskTotalVolume': 0},所以它是一个字典。在

现在你在这样的字典上迭代:

for key in r['d'].items()

key名称有误导性。这里的key是一个tuple的键和值。当试图在那个元组上使用[]时,会出现错误。您应该像这样直接访问数据:

^{pr2}$

相关问题 更多 >