Python:将字符串转换为标志

2024-10-03 13:26:57 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个字符串,它是匹配regexp[MSP]*的输出,那么将它转换为包含键M、s和p的dict的最干净的方法是什么?如果该键出现在字符串中,则每个键的值都为真?在

例如

 'MSP' => {'M': True, 'S': True, 'P': True}
 'PMMM'   => {'M': True, 'S': False, 'P': True}
 ''    => {'M': False, 'S': False, 'P': False}
 'MOO'    won't occur... 
          if it was the input to matching the regexp, 'M' would be the output

我能想到的最好办法是:

^{pr2}$

但这似乎有点笨拙,我想知道有没有更好的方法。在


Tags: the方法字符串falsetrueifitdict
2条回答

为什么不使用frozenset(或者如果需要可变性,set)?在

s = frozenset('PMMM')
# now s == frozenset({'P', 'M'})

然后你可以使用

^{pr2}$

检查标志P是否存在。在

在较新版本的Python中,您可以使用dict理解:

s = 'MMSMSS'
d = { c: c in s for c in 'MSP' }

在旧版本中,可以使用KennyTM指出的:

^{pr2}$

这将为长字符串提供良好的性能,因为如果这三个字符都出现在字符串的开头,则搜索可以提前停止。它不需要搜索整个字符串。在

相关问题 更多 >