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

时间:2019-05-10 17:47:29

标签: python dictionary nested

我有一个这样的字典:

{'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() :
    print(key['BidTotalVolume'])

我收到以下错误消息:

  

TypeError:元组索引必须是整数或切片,而不是str

我想做的是对程序说,用BidTotalVolume键给我项的值。

我该怎么做?为什么会收到此错误消息?

3 个答案:

答案 0 :(得分:1)

首先,您的词典中似乎没有双向标价键。

第二,您尝试在此处进行的操作或多或少:

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

您的词典没有3个级别,因此永远无法使用。

我认为您的意思是:

for key, value in r.items():
    print(r[key]['BidTotalVolume'])

这将失败,因为BidTotalVolume不在您的词典中。但是,请尝试使用其中的任何钥匙,它应该可以工作。

答案 1 :(得分:1)

std::enable_ifr[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时,您会收到该错误。您应该这样直接访问数据:

[]

答案 2 :(得分:0)

按照评论中的建议使用 MyClass.setLoaded(boolean)作为项()返回(键,值)的元组。对于仅键,可以使用keys(),对于仅值,可以使用values()