在元组中找到常用单词的更好方法是什么?

时间:2014-03-10 14:40:49

标签: python string tuples

我完成了一个练习,在其中我找到并返回两个字符串之间的常用单词,按字母顺序排列为字符串,用逗号分隔。虽然我能够正确地做到这一点,但我想知道是否有更好的方法。可以定义更好,但是你定义它。

def return_common(first, second):
    first = first.split(',')
    second = second.split(',')
    newList = ",".join(list(set(first) & set(second)))
    #newList = list(newList)
    newList = newList.split(',')
    newList = sorted(newList)
    newList = ",".join(newList)
    return newList

return_common("one,two,three", "four,five,one,two,six,three")
#above returns 'one,three,two'

3 个答案:

答案 0 :(得分:2)

代码可以像这样缩短(成一行) -

def return_common(first, second):
    return ",".join(sorted(set(first.split(","))&set(second.split(","))))

测试 -

>>> return_common("one,two,three", "four,five,one,two,six,three")
'one,three,two'

答案 1 :(得分:1)

基本方法很好但你做的工作太多了。重复连接和拆分,并将事物转换为不需要的列表。你需要对结果进行排序吗?

你可以做到

def return_common(first, second):
    common_words = set(first.split(",")) & set(second.split(","))
    return ",".join(common_words)

答案 2 :(得分:1)

我试图扩展你的问题。这是我的答案。

def return_common(*data):
    common_words = reduce(lambda a,b:a&b, map(lambda x: set(x.split(",")), data))
    return ",".join(common_words)

示例:

>>> return_common("two,three", "four,five,one,two,six,three", "three"):
'three'