我是一個Python新手,試圖解析一個文件來創建一個內存分配表。我的輸入文件格式如下:變量作爲鍵的Python字典
48 bytes allocated at 0x8bb970a0
24 bytes allocated at 0x8bb950c0
48 bytes allocated at 0x958bd0e0
48 bytes allocated at 0x8bb9b060
96 bytes allocated at 0x8bb9afe0
24 bytes allocated at 0x8bb9af60
我的第一個目標是創建一個表來計算特定數量的字節分配的實例。換句話說,我所希望的上述輸入輸出會是這樣的:
48 bytes -> 3 times
96 bytes -> 1 times
24 bytes -> 2 times
(現在,我不關心的內存地址)
由於我使用Python,我想使用字典做這件事將是正確的方式(基於大約3小時的閱讀Python教程)。這是一個好主意嗎?
在試圖使用字典來做到這一點時,我決定將字節數作爲'鍵',並將計數器作爲'值'。我的計劃是每發生一次密鑰都要增加計數器。截至目前,我的代碼片段如下:
# Create an empty dictionary
allocationList = {}
# Open file for reading
with open("allocFile.txt") as fp:
for line in fp:
# Split the line into a list (using space as delimiter)
lineList = line.split(" ")
# Extract the number of bytes
numBytes = lineList[0];
# Store in a dictionary
if allocationList.has_key('numBytes')
currentCount = allocationList['numBytes']
currentCount += 1
allocationList['numBytes'] = currentCount
else
allocationList['numBytes'] = 1
for bytes, count in allocationList.iteritems()
print bytes, "bytes -> ", count, " times"
有了這個,我在「對象的has_key」出現語法錯誤調用,這使我懷疑它是否是可以使用變量作爲字典鍵。迄今爲止我所見過的所有例子都假設密鑰可用。在我的情況下,我只能在解析輸入文件時才能得到我的密鑰。
(請注意,我輸入文件可以運行到千行,用數百種不同的鍵)
感謝您的幫助,您可以提供。
,我看到你報「的numBytes」,所以,你總是指不斷 – dmitry
和你行後'如果allocationList.has_key(「的numBytes」)'和'else'省略冒號 - 它應該是語法錯誤 – dmitry