在元组列表中查找最高对

时间:2019-01-21 12:47:28

标签: python list dictionary

所以我有4个不同的字典,d1,d2,d3,d4,我都创建了元组对,以了解该术语在我的文本中的常见程度。这些不同词典中的每一个都由实体类型标记,这就是为什么它们都在不同词典中的原因。然后,我可以对字典进行排序并找到出现次数最多的字典。尽管现在我已经找到了所有这些实体类型中发生率最高的所有,但我希望在所有这些实体类型中找到发生率最高的情况。

我现在不能以相同的方式对它进行排序,因为它是列表,而不是字典,我也不能简单地将前面的字典加在一起。

def t(tokens, pos, ner):
    entities={}
    in_entity=False
    for i, (token,tag) in enumerate (zip(tokens,pos)):
        if tag == ner:
            if in_entity:
                entity+=" "+token
            else:
                entity=token
                in_entity=True
        elif in_entity:
            entities[entity]=entities.get(entity,0)+1
            in_entity = False
    return entities

1a = t(tokens,ner,"A")
top_1a = sorted(1a.items(), key=operator.itemgetter(1), reverse= True) [:10]
print (top_1a)

2b = t(tokens,ner,"B")
top_2b = sorted(2b.items(), key=operator.itemgetter(1), reverse= True) [:10]
print (top_2b)

3c = t(tokens,ner,"C")
top_3c = sorted(3c.items(), key=operator.itemgetter(1), reverse= True) [:10]
print (top_3c)

4d = t(tokens,ner,"D")
top_4d = sorted(4d.items(), key=operator.itemgetter(1), reverse= True) [:10]
print (top_4d)

最重要的是,这些命令可以完美地将我的词典排在最有前10位的有序列表中。尽管现在我想要所有现在列表中的前10名。

top_o = top_1a + top_2b + top_3c + top_4d
top_fin = sorted(top_o.items(), key=operator.itemgetter(1), reverse = True) [:10]
print(top_fin)

我已经尝试过,尽管它不再是字典,但是列表.items无效。 top_o成功打印(每个列表分别作为一个较大的列表排序),尽管我现在如何再次对其重新排序?

0 个答案:

没有答案
相关问题