Python统计字典中的项

2024-06-01 03:31:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想数一数语音标签。到目前为止,我已经将词性标记(德语)存储在字典中,其中POS标记的键和出现次数的值。在

当我数数的时候,我想把“NN”和“NE”总结为一个变量“nomens_in_text”,因为它们都是名词。我做了一部分成功。当我有一个同时有'NN'和'NE'的输入文本时,在这种情况下,我的代码正在工作,我得到正确的结果,即'NN'和'NE'的总和。在

但问题是,当我有一个输入文本,例如只有'NN'而没有'NE',那么我会得到一个KeyError。在

我需要代码来查看输入文本中是否有'NN'或'NE'。如果有'NN'和'NE',那就把它们加起来。如果只有'NN',则只返回'NN'的出现次数,如果只有'NE',则相同。如果既没有“NN”也没有“NE”,则返回0或“None”。在

我想要一个代码,这将在下面描述的场景中适用于所有三个场景,而不会出现错误。在

# First Scenario: NN and NE are in the Input-Text
myInput = {'NN': 3, 'NE': 1, 'ART': 1, 'KON': 1}

# Second Scenario: Only NN is in the Input-Text
#myInput = {'NN': 3, 'ART': 1, 'KON': 1}

# Third Scenario: Neither NN nor NE are in the Input-Text
#myInput = {'ART': 1, 'KON': 1}

def check_pos_tag(document):
    return document['NN'] + document['NE']

nouns_in_text = check_pos_tag(myInput)
print(nouns_in_text)

# Output = If NN and NE are in the input text I get 4 as result
# But, if NN or NE are not in the input text I get a KeyError

我想我可以或者应该用if-else条件或者try-except块来解决这个问题。但我不知道如何实现这个想法。。。有什么建议吗?提前非常感谢!:-)


Tags: the代码textin文本inputnndocument
3条回答

使用^{},它接受参数(key, default),因此如果key不在document中,则返回{}。在

def check_pos_tag(document):
    return document.get('NN', 0) + document.get('NE', 0)

这应该做到:

def check_pos_tag(document):
    return document.get('NN', 0) + document.get('NE', 0)

使用defaultdict代替dict

from collections import defaultdict
myInput = defaultdict(int, {'NN': 3, 'ART': 1, 'KON': 1})

这样,您当前的check_pos_tag函数就可以工作而不需要任何修改

^{pr2}$

相关问题 更多 >