我有一个这样的字典:
{'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
键给我项的值。
我该怎么做?为什么会收到此错误消息?
答案 0 :(得分:1)
首先,您的词典中似乎没有双向标价键。
第二,您尝试在此处进行的操作或多或少:
print(r['d'][key]['BidTotalVolume'])
您的词典没有3个级别,因此永远无法使用。
我认为您的意思是:
for key, value in r.items():
print(r[key]['BidTotalVolume'])
这将失败,因为BidTotalVolume不在您的词典中。但是,请尝试使用其中的任何钥匙,它应该可以工作。
答案 1 :(得分:1)
std::enable_if
是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
时,您会收到该错误。您应该这样直接访问数据:
[]
答案 2 :(得分:0)
按照评论中的建议使用
MyClass.setLoaded(boolean)
作为项()返回(键,值)的元组。对于仅键,可以使用keys(),对于仅值,可以使用values()