簡體   English   中英

python根據字符串表示將元組添加到列表

[英]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.

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