Python:组合两个字符串并从中选择唯一元素

Phi*_*hil 2 python python-2.x python-2.7

我想说我对编程和 Python 都是新手。在发布这个问题之前,我确实尝试过进行研究,但我对基础知识的缺乏无助于产生任何结果,因此需要我在这里提问。

我有两个字符串,如下所示:

 str_a = "100,101,105,304"
 str_b = "400,500,101"
Run Code Online (Sandbox Code Playgroud)

我需要将这些字符串合并为一个,所以我使用:

  str_c = str_a + "," + str_b
Run Code Online (Sandbox Code Playgroud)

我的问题从这里开始。在这个新字符串中,其中的元素(数字)以逗号分隔,我希望每个项目仅列出一次。数字的顺序并不重要,但如果它是升序的,那将是相当惊人的。

我该如何将这两个数字结合起来,每个数字都列出一次,如果可能的话从小到大排序?

由于这些是字符串,我什至不确定是否可以迭代?

我们将非常感谢您的帮助,提前致谢。

Ant*_*zov 5

尝试这个:

str_a = "100,101,105,304"
str_b = "400,500,101,2000"
l = str_a.split(',') + str_b.split(',')
print ','.join(sorted(set(l), key=int))
Run Code Online (Sandbox Code Playgroud)

输出是:

100,101,105,304,400,500,2000
Run Code Online (Sandbox Code Playgroud)

感谢奥伦的评论!我添加了key=int一个额外的参数来将sorted列表的元素作为整数而不是字符串进行比较。该参数允许指定一个参数的函数,该函数将在列表的每个元素上调用以提取比较键。在我们的例子中,我们使用int将每个元素转换为整数。

  • 请注意,排序将各部分作为字符串进行比较(即“a”<“b”和“1111”<“2”),而不评估数字。如果只有 3 位数字,它可以正常工作,但更通用的解决方案是: `print ','.join(sorted(set(l), key = int))` (2认同)
  • 更详细一点,这里的一般方法是将每个字符串转换为一个列表,并以逗号分隔。然后将两者合并。`set()` 删除重复元素,`sorted()` 排序,`join()` 将其全部组合回逗号分隔的字符串 (2认同)