繁体   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