我有这段代码:
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位。
你知道怎么做吗?
答案 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
引用它们。