我確信這是一個非常基本的東西,我錯過了這裏,但是我已經撞到了我的頭,並且無法觸及它的底部。因此,需要幫助,如果有人能取悅:無法從python中的字典中獲取值
所以,我有形式
myDic = {
'request_path':['api', 'v1', 'settings'],
'request_headers':[['Accept', 'application/json; charset=utf-8'], ['app-version', '1.0.17'], ['version-code', '40'], ['os-version', '4.3'], ['deviceId', '000000000000000'], ['User-Agent', 'App-Android'], ['Host', 'api.applic.in'], ['Connection', 'Keep-Alive'], ['Accept-Encoding', 'gzip']]
}
的字典所以request_path鍵具有的值是一個列表。而request_headers鍵的值是列表的列表。
現在在我的代碼,我想這樣做(除其他事項外):
componentSize = len(myDic.get('request_path'))
genericCounter =0
while (genericCounter < componentSize):
print str(genericCounter+1) + "." + str(myDic.get('request_path')[genericCounter])
genericCounter = genericCounter + 1
而這給了我預期的結果爲:
1.api
2.v1
3.settings
然而,下面,取代在上面,
print str(myDic.get('request_headers')[genericCounter][0]) or
print str(myDic.get('request_headers')[genericCounter][0][0]) or
print str(myDic.get('request_headers')[genericCounter][0][0][0])
給了我一個錯誤:
File "myRep.py", line 393, in tamperData
print str(myDic.get('requestHeaders')[genericCounter][0][0][0])
File "/Library/Python/2.7/site-packages/netlib/odict.py", line 42, in __getitem__
k = self._kconv(k)
File "/Library/Python/2.7/site-packages/netlib/odict.py", line 206, in _kconv
return s.lower()
AttributeError: 'int' object has no attribute 'lower'
奇怪的是,當我嘗試
print str(myDic.get('request_headers')[genericCounter][0])
從Python提示
- 它給我的第一個列表是:
['Accept', 'application/json; charset=utf-8']
現在我試着調試問題,去/庫/ Python/2.7/site-packages/netlib/odict.py如錯誤中所示,並且看起來像get(key)返回傳遞鍵值的列表類型。因此,爲什麼我的第一次嘗試工作正常,這是有道理的。
但是在第二種情況下(request_headers),get(key)應該返回一個列表,不是嗎(只是在這裏它會列出一個列表)?首先是這個問題。
怎麼做'/ NETLIB/odict.py'適合這個? –