Python 这是肾盂病吗?什么是肾盂病?注意:我的解决方案通过了所有测试用例

Python 这是肾盂病吗?什么是肾盂病?注意:我的解决方案通过了所有测试用例,python,Python,问题: def remove_duplicates(string): no_dups = list(set(string)) no_dups.sort() total_dups = len(string) - len(no_dups) return "".join(no_dups), total_dups 编写一个名为remove_duplicates的函数,该函数将接受一个名为string的参数。 此字符串输入将仅包含a-z之间的字符,并且应删除字符串中所有重

问题:

def remove_duplicates(string):
    no_dups = list(set(string))
    no_dups.sort()
    total_dups = len(string) - len(no_dups)
    return "".join(no_dups), total_dups
编写一个名为remove_duplicates的函数,该函数将接受一个名为string的参数。 此字符串输入将仅包含a-z之间的字符,并且应删除字符串中所有重复的字符

返回具有两个值的元组: 仅包含唯一排序字符的新字符串。 删除的重复项的总数

示例:

def remove_duplicates(string):
    no_dups = list(set(string))
    no_dups.sort()
    total_dups = len(string) - len(no_dups)
    return "".join(no_dups), total_dups
删除重复项('aaabbbac')=>('abc',5)

我的解决方案:

def remove_duplicates(string):
    no_dups = list(set(string))
    no_dups.sort()
    total_dups = len(string) - len(no_dups)
    return "".join(no_dups), total_dups
测试用例

import unittest;

class Test(unittest.TestCase):
    def test_output_is_correct(self):
        result1 = remove_duplicates('aaabbbac')
        result2 = remove_duplicates('a')
        result3 = remove_duplicates('thelexash')

        self.assertIsInstance(result1, tuple, msg='Incorrect output type')
        self.assertEqual(result1, ('abc', 5), msg='Incorrect output')

        self.assertIsInstance(result2, tuple, msg='Incorrect output type')
        self.assertEqual(result2, ('a', 0), msg='Incorrect output')

        self.assertIsInstance(result3, tuple, msg='Incorrect output type')
        self.assertEqual(result3, ('aehlstx', 2), msg='Incorrect output')

    def test_output_is_correct_hidden(self):
        result1 = remove_duplicates('thisisateststring')
        result2 = remove_duplicates('letsseehowthisgoes')
        result3 = remove_duplicates('hiddenhiddenhiddenhaha')

        self.assertIsInstance(result1, tuple, msg='Incorrect output type')
        self.assertEqual(result1, ('aeghinrst', 8), msg='Incorrect output')

        self.assertIsInstance(result2, tuple, msg='Incorrect output type')
        self.assertEqual(result2, ('eghilostw', 9), msg='Incorrect output')

        self.assertIsInstance(result3, tuple, msg='Incorrect output type')
        self.assertEqual(result3, ('adehin', 16), msg='Incorrect output')

虽然我可能会这样写,但对于我的口味来说,Pythonic已经足够了:

def remove_duplicates(string):
    no_dups = ''.join(sorted(set(string)))
    return (no_dups, len(string) - len(no_dups))

您可以通过调用
sorted(set(string))
来剪切额外的
list()