根据值和某些条件组合字典键

时间:2021-06-17 17:59:10

标签: python-3.x pandas dictionary

我有以下类型的字典,我想将它们合并到共同的值上。值为 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']}

谁能帮忙解决这个问题?

1 个答案:

答案 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']}]