我有一个元组列表:
sentenceParts = [('there', 'EX'), ('is', 'VBZ'), ('a', 'DT'), ('huge', 'JJ'), ('shaggy', 'NN'), ('dog', 'NN'), ('in', 'IN'), ('the', 'DT'), ('yard', 'NN')]
我希望有一个函数,例如,如果我知道我需要找到值“IN”(其键在本例中为“in”),该函数将返回上一个元组键(在此例如,'dog') 以及该元组的键的数字索引(在这种情况下,我相信它是 5[0])
我目前从这一行获取要搜索('in')的值:
wordIndex = next((word for word, value in sentenceParts if value == "IN"), None)
该行正确返回“in”的键。我需要一种类似的方法来获得我需要的输出('dog',5[0] prehaps)。我试过弄乱各种版本的 sentenceParts.index(wordIndex) 但我绝对没有正确使用它。我已经找到了至少三种不同的方法来让代码返回“in”给我,还有几十种方法来获得 ValueError 或 AttributeError ... ', 5[0]
如果我必须将其放入伪代码中,它将是:
wordIndex = next((PREVIOUS word, INDEX, for word, value in sentenceParts if value == "IN"), None)
谢谢。抱歉,如果之前有人问过这个问题,但经过大量搜索后我找不到任何真正符合要求的东西……如果我确实看到了,我可能没有足够的知识来识别它。希望我没有错过它。感谢您提供的任何帮助。
最佳答案
在压缩列表上使用zip
和enumerate
:
def get_previous_item(lst, search_item):
for i, (x, y) in enumerate(zip(lst, lst[1:])):
if y[1] == search_item:
return i, x[0]
用法:
>>> get_previous_item(sentenceParts, 'IN')
(5, 'dog')
关于Python:在元组列表中,找到下一个元组的值时检索前一个元组的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56895773/