2011-10-30 77 views
2

比方说,我有话的列表中找到的话: 辞职 树脂 redyed 抵抗 reeded的Python - 基于字符串中的指定重复的字符

我也有一个字符串” .10.10"

我需要迭代整个列表,并找到字符串中存在重复字符的位置。

例如,字符串” .10.10" 将查找的单词‘redyed’因为有E公司,其中有1的和有地方有0的D的。

另一个字符串 “.00.0。”会发现'reeded'这个词,因为在那个位置上有e。

我在Python尝试至今都没有真正值得打印。此刻,我查看字符串,将全部0添加到数组,然后将1添加到数组,然后尝试在数组位置中查找重复的字符。但它非常笨拙,不能正常工作。

+0

这是功课?如果是这样,请标记为这样。如果没有,也许你可以告诉我们更多关于你想要解决的实际问题。 –

回答

5
def matches(s, pattern): 
    d = {} 
    return all(cp == "." or d.setdefault(cp, cs) == cs 
       for cs, cp in zip(s, pattern)) 

a = ["resign", "resins", "redyed", "resist", "reeded"] 
print [s for s in a if matches(s, ".01.01")] 
print [s for s in a if matches(s, ".00.0.")] 

打印

['redyed'] 
['reeded'] 
+0

多么优雅的解决方案! – Acorn

+0

您可以使用与生成器表达式的过滤条件相同的'if',而不是将其用于三元表达式。 – agf

+0

@agf:三元表达不是必需的,你是对的。我在你评论的同一时间编辑了我的答案,但你的解决方案听起来更好。 –

相关问题