[英]python adding tuple to list based on string representation
所以我有這個元組的字符串字典:
data = '604452601061112210'
NewDict = {'60': ('PUSH1', 1), '61': ('PUSH2', 2), '52' : ('MSTORE', 0 ), '12' : ('ADD', 0)}
我試圖掃描字符串以查找字典鍵,添加dict鍵以將列表鍵以及字符串中的以下字節添加到列表中,例如,它應按此順序打印:
[PUSH1 44, MSTORE, PUSH1 10, PUSH2 1122, ADD]
但是,我的輸出是:
['PUSH1 44', 'MSTORE ', 'PUSH1 10', 'PUSH2 2210']
這是我的代碼:
i = 0
L = []
while i < len(data):
op = data[i:i+2]
for item in NewDict:
if op in item:
i += NewDict[item][1] * 2
pep = NewDict[item][0] + ' ' + data[i:i+NewDict[item][1] * 2]
L.append(pep)
else:
i += 2
print(L)
任何幫助,將不勝感激,謝謝
i = 0
L = []
while i < len(data):
op = data[i:i+2]
for item in NewDict:
if op in item:
i += NewDict[item][1] * 2
pep = NewDict[item][0] + ' ' + data[i:i+NewDict[item][1] * 2]
L.append(pep)
else:
i += 2
print(','.join(L))
','.join(L)
刪除其周圍的引號。 希望這就是你的意思? 您真的不能將元組添加到列表中,因為這些是不同的東西。 簡單地說,元組是不可更改的列表。
問題是您要在運算符之后提取參數之前,以NewDict[item][1] * 2
遞增i
。 您應在提取后執行此操作。
您也不需要for item in NewDict:
循環中的for item in NewDict:
,只需直接訪問NewDict
的元素即可。
while i < len(data):
op = data[i:i+2]
if op in NewDict:
opname, oplen = NewDict[op]
param = data[i+2:i+2+oplen*2]
L.append(opname + " " + param)
i += 2 + oplen*2
else:
i += 2
即使解決了這個問題,您也不會獲得ADD
結果,因為data
的最后一個操作是10
,而不是12
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.