我有以下类型的字典,我想将它们合并到共同的值上。值为 B-Disease、I-Disease 等,其中 B 代表开始,I 代表结束。
{'allergen': 'B-Disease'}
{'allergic': 'B-Disease'}
{'symptoms': 'I-Disease'}
{'allergic': 'B-Disease'}
{'symptoms': 'I-Disease'}
{'allergen-specific': 'B-Disease'}
我想以这样的方式组合键(过敏原、过敏、症状等),如果键具有 B 值,那么它应该与下一个实体连接,前提是下一个实体也有一个 B 值。但是如果下一个值是 I 那么那应该是连接的结束键。需要对所有键重复这些步骤。
生成的字典应如下所示:
{'Disease': ['allergen allergic symptoms']}
{'Disease': ['allergic symptoms']}
{'Disease': ['allergen-specific']}
或
{'Disease': ['allergen allergic symptoms', 'allergic symptoms', 'allergen-specific']}
谁能帮忙解决这个问题?
答案 0 :(得分:1)
我假设您的字典存储在列表中。
试试这个:
dict_list = [{'allergen': 'B-Disease'},{'allergic': 'B-Disease'},{'symptoms': 'I-Disease'},
{'allergic': 'B-Disease'},{'symptoms': 'I-Disease'},{'allergen-specific': 'B-Disease'}]
disease = {'Disease':[]}
output_list = []
for i, d in enumerate(dict_list):
if (list(d.values())[0] == 'I-Disease'):
output_list.append(disease)
disease = {'Disease':[]}
continue
disease['Disease'].append(list(d.keys())[0])
if (i == len(dict_list)-1):
output_list.append(disease)
输出:
print(output_list)
[{'Disease': ['allergen', 'allergic']},
{'Disease': ['allergic']},
{'Disease': ['allergen-specific']}]