簡體   English   中英

在Python列表中搜索替換模式

[英]Search replace patterns in a Python list

我有一個Rubik的Cube運動列表和一個像這樣的快捷方式字典:

mvts = ['U', 'U', 'R', 'Ri', 'L2', ...]
shortcuts = {'UU' : 'U2', 'RRi' : '', ...}

我正在嘗試根據shortcuts的內容在mvts列表上應用“搜索並替換”。

這是示例中的結果:

mvts = ['U2', 'L2', ...]

我正在使用Python3,不能使用從頭開始沒有Python附帶的庫。

我被卡住了。 我可以在String上使用一些正則表達式來執行此操作,但是在我的列表中看不到如何快速進行此搜索。

嘗試這個 :

for i in range(len(mvts)):
      if(mvts[i] in shortcuts):
           mvts[i] = shortcuts[mvts[i]]

注意

如果您已經確定字典中存在列表元素,則可以刪除if

如果要刪除列表中的重復項:

mvts = list(set(mvts))

您可以使用re.sub

import re

mvts = ['UUU', 'U', 'R', 'Ri', 'L2']
shortcuts = {'UU' : 'U2', 'RRi' : ''}

def do_sub(m):
    for k, v in shortcuts.items():
        m = re.sub(k, v, m)
    return m

[do_sub(m) for m in mvts]

輸出:

['U2U', 'U', 'R', 'Ri', 'L2']

我通過仔細搜索以下術語找到了一種解決方案:“在列表Python中搜索/替換子列表”。

所以我使用了@latty的解決方案,在這里https://stackoverflow.com/a/12898180/2058840進行了說明。

我必須將字典結構更改為:

shortcuts = {'U U' : ['U2'], 'R Ri' : '', ...}

接着 :

for (sublist, shortcut) in shortcuts:
    replace_list(mvts, sublist.split(), shortcut) #@latty's function

感謝@ martin-konecny和@arman的幫助!

暫無
暫無

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

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