簡體   English   中英

為什么會出現此錯誤:TypeError:元組索引必須是整數或切片,而不是str

[英]Why do I get this error: TypeError: tuple indices must be integers or slices, not str

我有這樣的命令:

{'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鍵給我項目的值。

我應該怎么做? 為什么會收到此錯誤消息?

首先,您的字典中似乎沒有bidtotalvolume鍵。

其次,您嘗試在此處進行的操作或多或少是:

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

您的詞典沒有3個等級,因此永遠無法使用。

我認為您的意思是:

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

由於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 當嘗試在該元組上使用[]時,會收到該錯誤。 您應該這樣直接訪問數據:

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

如注釋中所建議for key, values in d.items():用作for key, values in d.items():因為items()返回(key,value)的元組。 對於僅鍵,可以使用keys(),對於僅value,可以使用values()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM