【问题标题】:Selecting certain tuple based on elements in a tuple filled list根据元组填充列表中的元素选择某些元组
【发布时间】:2021-06-03 04:32:38
【问题描述】:

我正在用 NLTK 做一些 NLP,并且我有一个 Counter() 序列,例如

x = [(('DT', 'NN'), 59), (('NN', '.'), 50)]

搜索后,我应该得到一个包含上述要求的所有元组的列表。

y = [(('DT', 'NN'), 59)]

我的问题是,如何以最 Python 的方式有效地选择所有具有 'DT' 作为内部元组的第一个元素的元素,而不需要 O(n) 时间?

【问题讨论】:

  • 当前数据结构不可能,除非您将该列表重新映射到一个映射,使得 2 元组键的第一个元素成为键,并与第二个元素形成一个新的 2 元组2元组键和计数并将其附加到列表中。这将是一个单一的 O(n) 操作,但从该新结构中得到的查找将具有从 dict 查找数据的标准时间复杂度。

标签: python search nlp


【解决方案1】:

正如 metatoaster 在他的评论中所阐述的那样,你会怀疑。必须重组您的数据以按照您想要的方式执行操作(无需 O(n))。

话虽如此,在当前状态下并参考您的示例,您可以这样做:

y = [t for t in x if t[0][0] == 'DT']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    相关资源
    最近更新 更多