现在,您已经修复了原始问题,并修复了执行反向检查的下一个问题,并重命名了所有变量,现在您得到了:for match in dictionary:
if any(match in value for value in sentences):
print match
你的问题是:The way I have the code written i can get the dictionary items but instead i want to print the sentences.
嗯,是的,你的match是一个字典项,这就是你要打印的内容,所以你得到的当然是这个。在
如果要打印包含字典项的句子,就不能使用^{},因为如果有元素为真,那么该函数的全部意义就是返回True。它不会告诉你是哪一个事实上,如果不止一个,它会在第一个停止。在
如果您不了解any之类的函数以及传递给它们的生成器表达式,那么就不应该将它们用作神奇的调用。弄清楚如何将它们写成显式循环,这样您就可以轻松地回答这些问题了。(请注意,any文档直接向您展示了如何编写等效循环。)
例如,现有代码相当于:
^{pr2}$
这样写,应该很明显如何修复它。首先,您希望打印句子而不是单词,所以打印value而不是match(同样,如果您使用有意义的变量名,如sentence和{},而不是像value这样的无意义的名称和match这样的误导性名称,这将非常有帮助。其次,要打印所有匹配的句子,而不仅仅是第一个句子,所以不要break。所以:for match in dictionary:
for value in sentences:
if match in value:
print value
如果你回到我的第一个答案,你可能会注意到这正是我建议的结构。在
您可以通过使用理解和迭代器函数来简化或缩短这一过程,但除非您理解了简单版本,以及这些理解和迭代器函数是如何工作的。在