Python 3.x - 如何在两个字符串中查找字符集的交集

时间:2017-05-18 16:34:04

标签: python python-3.x

这是我试图编辑的代码,但我不知道如何:

var1= 'ABC'
var2= 'DBC'
match= any(x in var1 for x in var2)
if any(x in var1 for x in var2):
    print("var1 in var2")
    print("The letters that are in var1 and var2 are", match)
else:
    print("No results.")

当我运行该代码时,我得到的这些结果对我来说毫无用处:

var1 in var2
The letters that are in var1 and var2 are True

我希望程序做的是:

var1 in var2
The letters that are in var1 and var2 are BC

如果要将var1更改为ABD,我希望结果为:

var1 in var2
The letters that are in var1 and var2 are BD

P.S。我还希望它按字母顺序打印字母: 所以我希望结果类似于The letters that are in var1 and var2 are BD,而不是The letters that are in var1 and var2 are DB

非常感谢。 您诚挚的。

2 个答案:

答案 0 :(得分:2)

var1= 'ABC'
var2= 'DBC'
match= [x for x in var1 if x in var2]
if match:
    print("var1 in var2")
    match_str = ''.join(sorted(match))
    print("The letters that are in var1 and var2 are %s." % match_str)
else:
    print("No results.")

打印:

var1 in var2
The letters that are in var1 and var2 are BC.

基本上我使用列表推导来查找哪些元素是相同的,检查列表是否为空if match,使用sorted函数排序,然后将每个元素连接成带有''.join的单个字符串(与空字符串''连接,因为我们不希望字母之间有空格)。

然后,为了避免在输出中使用逗号,我使用%格式语法将已排序的字符插入到输出句子中。

答案 1 :(得分:1)

您也可以使用set算术来执行此操作。

>>> var1 = 'ABC'
>>> var2 = 'DBC'
>>> ''.join(set(var1).intersection(set(var2)))
'CB'

更改var1

>>> var1 = 'ABD'
>>> ''.join(set(var1).intersection(set(var2)))
'BD'