返回列表内的完整字符串的变量

时间:2015-05-15 10:57:14

标签: python

我有这段代码:

topic = "test4"
topics = sns.get_all_topics()   
topicsList = topics['ListTopicsResponse']['ListTopicsResult']['Topics']
topicsListNames = [t['TopicArn'] for t in topicsList]

返回一个列表:

[u'arn:aws:sns:us-east-1:10:test4', u'arn:aws:sns:us-east-1:11:test7']

我现在尝试创建的变量返回相对于topic变量的完整字符串。

我有变量topic = "test4",我想要一个返回topicResult的变量u'arn:aws:sns:us-east-1:10:test4

相对于topic的字符串并不总是在列表的第1位。

你知道怎么做吗?

2 个答案:

答案 0 :(得分:1)

topicResult = " ".join([t['TopicArn'] for t in topicsList if t['TopicArn'].endswith(topic)])

这将检查列表中的字符串,以查看topic变量是否是其中一个字符串的结尾。 " ".join()为您提供了一个字符串,但如果您想保留以topic结尾的字符串列表,则可以删除它。如果topic并不总是位于字符串的末尾,您只需检查字符串中是否有topic

topicResult = " ".join([t['TopicArn'] for t in topicsList if topic in t['TopicArn']])

答案 1 :(得分:1)

您可以使用意向列表,并使用check语句,但我认为内置过滤器会更快:

topicsListNames = filter(lambda item: item['TopicArn'].endswith(topic), topicsList)

基本上,此行采用topicsList,然后仅采用item为True的项item['TopicArn'].endswith(topic),即。 'TopicArn'元素以topic变量的引用结尾的项目。最后,返回所有这些“好”的项目,并topicsListNames引用它们。