2

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

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

 str_a = "100,101,105,304"
 str_b = "400,500,101"

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

  str_c = str_a + "," + str_b

我的问题从这里开始。在这个新字符串中,元素(数字)用逗号分隔,我希望每个项目只列出一次。数字的顺序无关紧要,但如果它是上升的,那将是非常惊人的。

我能做些什么来结合这两个,让每个数字列出一次,如果可能的话,从小到大排序?

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

非常感谢您的帮助,在此先感谢。

4

3 回答 3

4

尝试这个:

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))

输出是:

100,101,105,304,400,500,2000

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

于 2012-10-04T22:53:52.783 回答
1

您想使用 split 方法拆分字符串:

str_a_vals = str_a.split(",")
str_b_vals = str_b.split(",")

然后做:

allVals = str_a_vals
allVals += str_b_vals

str_c = ",".join(set(allVals))
于 2012-10-04T22:49:24.877 回答
0

如果您想做诸如排序和选择数字之类的事情,将数字存储在字符串中可能不是正确的方法。尝试使用列表,如下所示:

list_a = [100,101,105,304]
list_b = [400,500,101]

获取组合列表的唯一元素就像

unique = set(list_a + list_b)

并按升序排列它们是

ascending = sorted(list_a + list_b)
于 2012-10-04T23:05:41.013 回答