如果与当前令牌python相同,则删除句子中的前一个标记

时间:2016-07-21 14:23:04

标签: python dictionary tuples

我有两个关键值对的词典,如:

return entries_final

键是句子中数字和位置插槽的索引位置的元组:

tokenIDs2number = {(6, 7): 1000000000.0, (22,): 700.0, (12,): 3000.0}

tokenIDs2number = {(27, 28): u'South Asia'}

我想循环遍历数字和位置的所有元组,并且如果它们彼此相邻,则从元组中移除值,例如,让他们:

GDP in 2007 totaled about $ 1 billion , or about $ 3,000 per capita -LRB- exceeding the average of about $ 700 in the rest of South Asia -RRB- .

所以稍后,我可以用位置和数字槽填充这个句子标记,所以句子变成:

tokenIDs2number = {(7,): 1000000000.0, (22,): 700.0, (12,): 3000.0}

tokenIDs2number = {(28,): u'South Asia'}

而不是:

GDP in 2007 totaled about $ NUMBER_SLOT , or about $ NUMBER_SLOT per capita -LRB- exceeding the average of about $ NUMBER_SLOT in the rest of LOCATION_SLOT -RRB- .

当前代码:

GDP in 2007 totaled about $ NUMBER_SLOT NUMBER_SLOT , or about $ NUMBER_SLOT per capita -LRB- exceeding the average of about $ 700 in the rest of LOCATION_SLOT LOCATION_SLOT -RRB- .

然而,似乎我不能只从元组中删除数字,所以我很难弄清楚如何做到这一点。

1 个答案:

答案 0 :(得分:1)

由于tuple s(通常是dict个键)是不可变的,因此您无法直接更改密钥。但是,您可以使用字典理解将您的字典转换为您需要的字符串:

tokenIDs2number = {(6, 7): 1000000000.0, (22,): 700.0, (12,): 3000.0}
tokenIDs2number = {(k[-1],): v for k, v in tokenIDs2number.items()}

使用k[-1]始终访问最后一个元素,可以以相同的方式处理任何长度的元组。