根据标签查找属于在一起的字符串

时间:2018-08-20 07:50:43

标签: python string list match

假设我有一个嵌套列表,如下所示:

my_list = [['Germany', 'B-LOC'], ['Angela', 'B-PER'], ['Merkel', 'I-PER']]

因此,每个元素包含两个字符串,第一个字符串代表文本数据中的单词,第二个字符串代表机器学习模型中的标签。

在这里,B-LOCBegin LocationB-PERBegin Person,而I-PERInside Person

我感兴趣的是一种根据标签来查找属于在一起的字符串的聪明方法。

在这种情况下,我想输出类似

print(....)
>>> Germany Location
>>> Angela Merkel Person

任何建议/提示如何开始?

2 个答案:

答案 0 :(得分:0)

这是一种方法。使用collections.defaultdict

例如:

from collections import defaultdict
my_list = [['Germany', 'B-LOC'], ['Angela', 'B-PER'], ['Merkel', 'I-PER']]
d = defaultdict(list)

check_val = {"PER": "Person", "LOC": "Location"}

for i in my_list:
    d[check_val.get(i[1][-3:], "N\A")].append(i[0])

for k, v in d.items():
    print( " ".join(v) + " " + k )

输出:

Angela Merkel Person
Germany Location

答案 1 :(得分:0)

尝试列表理解:

data_location = [x[0] for x in my_list if 'LOC' in x[1]]
data_person = [x[0] for x in my_list if 'PER' in x[1]]
print( ' '.join(data_location), 'Location')
print(' '.join(data_person), 'Person')

输出:

Germany Location
Angela Merkel Person