检查两个字符串在 Python 中是否具有相同的字符

目录

Check if two strings have the same characters in Python

  1. 检查两个字符串在 Python 中是否具有相同的字符
  2. for使用循环检查两个字符串是否具有相同的字符
  3. 使用 collections.Counter 检查两个字符串是否具有相同的字符

检查两个字符串在 Python 中是否具有相同的字符

检查两个字符串是否具有相同的字符:

  1. 使用该sorted()函数对两个字符串进行排序。
  2. 使用相等运算符比较结果。
  3. 如果比较结果为True,则两个字符串具有相同的字符。
主程序
def have_same_characters(str1, str2): return sorted(str1) == sorted(str2) print(have_same_characters('bob', 'obb')) # 👉️ True print(have_same_characters('bob', 'obbb')) # 👉️ False print(have_same_characters('bob', 'abc')) # 👉️ False

sorted函数接受一个可迭代对象,并从可迭代对象中项目返回一个新的排序列表。

主程序
print(sorted('bob')) # 👉️ ['b', 'b', 'o'] print(sorted('obb')) # 👉️ ['b', 'b', 'o']
如果两个字符串具有相同的长度并且包含相同的字符,则比较结果为True

我们在比较之前对字符进行排序,因此字符串中字符的顺序并不重要。

True仅当两个字符串包含相同字符且长度相同时,代码示例中的函数才会返回。

for使用循环检查两个字符串是否具有相同的字符

如果你需要检查两个字符串是否有相同的字符,而不考虑字符串的长度和每个字符出现的频率,使用循环for

主程序
def have_same_characters(str1, str2): for char in str1: if not char in str2: return False return True print(have_same_characters('bob', 'obb')) # 👉️ True print(have_same_characters('bob', 'obbbb')) # 👉️ True print(have_same_characters('abc', 'aabbcc')) # 👉️ True print(have_same_characters('bob', 'abc')) # 👉️ False

我们使用for循环来迭代其中一个字符串。

在每次迭代中,我们检查当前字符是否包含在另一个字符串中。

如果不满足条件,我们会False立即从函数返回。

如果字符串中的所有字符都满足条件,则函数返回
True

这种方法只检查字符串 A 中的所有字符是否都包含在字符串 B 中。

为了满足条件,两个字符串不必具有相同的长度。

使用 collections.Counter 检查两个字符串是否具有相同的字符

您还可以使用该类collections.Counter来检查两个字符串是否具有相同的字符。

主程序
from collections import Counter str_1 = 'bob' str_2 = 'obb' if Counter(str_1) == Counter(str_2): # 👇️ this runs print('The strings have the same characters') else: print('The strings do NOT have the same characters')

模块中的 Counter

collections该类的子类dict

该类基本上是键数对的映射。

主程序
from collections import Counter str_1 = 'bob' str_2 = 'obb' print(Counter(str_1)) # Counter({'b': 2, 'o': 1}) print(Counter(str_2)) # Counter({'b': 2, 'o': 1})

如果Counter对象包含相同的键数对,则两个字符串包含相同的字符。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: