映射集在Python上的标签数据结构上

时间:2017-11-30 21:05:27

标签: python search data-structures

我有一组看起来像S = {'apples', 'bananas', 'grapes', 'lemons'}的关键字,我想将标签fruit关联到此集合,以便根据集合成员函数对其进行分类:return 'fruit' if x in S。我有很多这样的套装和相应的标签。这些集合有空的交叉点。是否存在可能为此目的提供最佳服务的数据结构?我想到的唯一想法是遍历所有集合并计算隶属函数。是否有可能实现像倒置字典之类的东西 - 知道一个值给出一个键?

2 个答案:

答案 0 :(得分:3)

所以,你有一些单词和标签:

>>> S1 = {'apples', 'bananas', 'grapes', 'lemons'}
>>> l1 = 'fruit'
>>> S2 = {'lettuce', 'tomato', 'carrot'}
>>> l2 = 'veggies'

将这些聚合到一个容器中:

>>> sets_and_labels = [(S1, l1), (S2, l2)]

建立字典:

>>> map = {k:l for s, l in sets_and_labels for k in s}
>>> map
{'bananas': 'fruit', 'lettuce': 'veggies', 'carrot': 'veggies', 'lemons': 'fruit', 'apples': 'fruit', 'tomato': 'veggies', 'grapes': 'fruit'}
>>> map['lemons']
'fruit'
>>> map['carrot']
'veggies'
>>>

注意,如果你已经说过,这种方法的成对交集是空的。

答案 1 :(得分:2)

如果主要用例是从关键字到设置名称(即'apples' - > fruit),那么你应该有一个看起来像这样的单词:

{'apples': 'fruit', 'bananas': 'fruit',...}

您可以使用常量来代表类别,但我怀疑字符串实习会使这种情况变得更糟(如果有的话)。