Python 3.x 字符串比较在python中未按预期工作

Python 3.x 字符串比较在python中未按预期工作,python-3.x,string,comparison,Python 3.x,String,Comparison,如果我错了,请纠正我 我正在尝试使用我为Leetcode的一个问题编写的模式匹配程序。我想知道,即使输出字符串与特定的输入匹配,最后发生的错误是什么 def wordPattern(pattern,str): pattern_array=[] str_array=[] pattern_array=[i for i in pattern] str_array=str.split(" ") dict={}

如果我错了,请纠正我

我正在尝试使用我为Leetcode的一个问题编写的模式匹配程序。我想知道,即使输出字符串与特定的输入匹配,最后发生的错误是什么

def wordPattern(pattern,str):
    pattern_array=[]
    str_array=[]
    
    pattern_array=[i for i in pattern]
    str_array=str.split(" ")
    
    dict={}
    
    for i in range(len(pattern_array)):
        if i in dict:
            if str_array[i]!=dict[pattern_array[i]]:
                return False
        else:
            dict[pattern_array[i]]=str_array[i]
    
    
    
    for keys, values in dict.items():
        pattern=pattern.replace(keys,values+" ")
        
    print(pattern)
    print(str)
    
    return (str==pattern)


找到了这个问题的答案,因为我在前面提到的字符串末尾添加了额外的空间

pattern=pattern.replace(键,值+)
,为字符串末尾添加的额外空间。因此,我将删除它。

  • 我们也可以使用
    map
    来解决这个问题
  • 在Python中,我们不必像在Java中那样将
    传递到
    拆分
    ,例如:

谢谢这个解决方案,Emma,它很有用。对于我的情况,下面的代码片段同样适用。
str="dog cat cat dog"
pattern="abba"
wordPattern(pattern,str)```



Output:
dog cat cat dog
dog cat cat dog
False
class Solution:
    def wordPattern(self, pattern, sentence):
        words = sentence.split()
        return tuple(map(pattern.find, pattern)) == tuple(map(words.index, words))