Python:在元组列表中,找到下一个元组的值时检索前一个元组的键?

标签 python list tuples key

我有一个元组列表:

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)

谢谢。抱歉,如果之前有人问过这个问题,但经过大量搜索后我找不到任何真正符合要求的东西……如果我确实看到了,我可能没有足够的知识来识别它。希望我没有错过它。感谢您提供的任何帮助。

最佳答案

在压缩列表上使用zipenumerate:

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/

相关文章:

python - tensorflow 相对于 numpy 的一般计算优势

python - 如何在字典列表中使用列表和字典理解添加键和值?

c++ - 从可调用元组的结果创建元组

python - 在 python 中创建元组的等级

python - 从 finditer 获取跨度和匹配

使用 NumPy 数据类型的 Python 字典查找速度

algorithm - 合并k个排序链表——分析

sql - 如果在列中交换相同的值,则元组是重复的,如何删除 Oracle SQL 中的重复项?

python - 在 SQLAlchemy 和 Python 中更新表中的记录

返回单个骰子的 Python 骰子类