【问题标题】:Create a dictionary for the token, tags of a text为标记、文本标签创建字典
【发布时间】:2014-11-27 18:41:46
【问题描述】:

我有一个带标签的文本,我想制作一个包含令牌和文本标签的字典。 我试过这个

text = "he/s is/v a/p good/j man/n"

dic = {}
for w in text.split():
    ti = w.split('/')
    tok =ti[0] 
    tag =ti[1]
    dic[tok] = tag
    print dic

这是输出

{'he': 's'}
{'is': 'v', 'he': 's'}
{'a': 'p', 'is': 'v', 'he': 's'}
{'a': 'p', 'is': 'v', 'good': 'j', 'he': 's'}
{'a': 'p', 'is': 'v', 'good': 'j', 'man': 'n', 'he': 's'}

如何防止重复

【问题讨论】:

    标签: python python-2.7 python-3.x dictionary


    【解决方案1】:

    您没有创建任何重复项。只需将打印语句放在 for 循环之外而不是内部:

    for w in text.split():
        ti = w.split('/')
        tok =ti[0] 
        tag =ti[1]
        dic[tok] = tag
    print dic
    

    输出将是:

    {'a': 'p', 'is': 'v', 'good': 'j', 'man': 'n', 'he': 's'}
    

    您可以像这样简单地创建这个字典:

    >>> text = "he/s is/v a/p good/j man/n"
    >>> dict([i.split('/') for i in text.split()])
    {'a': 'p', 'is': 'v', 'good': 'j', 'man': 'n', 'he': 's'}
    

    【讨论】:

    • 为什么不按正文顺序?
    • 这是因为python字典是无序的数据结构。字典中不需要顺序,因为任何值都可以通过其键直接访问。
    【解决方案2】:

    这是因为你的 print 在 for 循环中,你可以用 list comprehension 来做所有事情。首先用空格(s.split())分割你的字符串,然后用/

    >>> {i:j for i,j in [i.split('/') for i in s.split()]}
    {'a': 'p', 'is': 'v', 'good': 'j', 'man': 'n', 'he': 's'}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-31
      • 2019-03-17
      • 2021-06-01
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多