从输出中删除不必要的方括号



下面的代码返回:

[[('direction', 'north')], [('direction', 'east')], [('direction', 'south')]]

每个值周围都有一组[],我想知道如何去掉它们。理想的输出是:

[('direction', 'north'), ('direction', 'east'), ('direction', 'south')]

以下是功能:

def scan(input):
words = input.split()
dictionary = [('direction', 'north'),('direction', 'south'),('direction', 'east')]
output = []
for word in words:
output.append(list(filter(lambda x:word in x, dictionary)))
return output
print(scan('north east south'))

有人知道为什么方括号会出现在输出中,以及我如何去掉它们吗?

我们非常感谢任何协助。

先生,你的生活太复杂了。就用这个。

#注意:x将是您的列表

new = [lst[0] for lst in x]

输出

[('direction', 'north'), ('direction', 'east'), ('direction', 'south')]

您使用了错误的方法来增加外部列表。您附加了一个元组的列表,而不是简单地添加元组。只需将功能更改为您需要的功能:

output.extend(list(filter(lambda x:word in x, dictionary)))

结果:

[('direction', 'north'), ('direction', 'east'), ('direction', 'south')]

在出现错误的地方修复问题,而不是稍后更正错误。

这些qote是因为您的过滤器被转换为一个包含元组的列表。因此,如果你只通过添加[0]来获得第一个元素,就像这个一样

output.append(list(filter(lambda x:word in x, dictionary))[0])

它应该能解决你的问题。

最新更新