类似于Python dict的数据结构,其中集合的任何元素都是该集合的键

时间:2018-10-26 22:24:24

标签: python data-structures

Python中是否有一个已经实现的数据结构,有点像字典,但是其中的值是一个set / dict(具有键是可取的,但是如果已经存在这样的东西而没有键元素,那么它是而不是topstopper),并且set / dict中的任何元素充当查找set / dict的键?在所有涉及的集合都不相交的情况下,这将起作用。

具体示例: 我正在将8位向量值连接到字符和名称,并且希望能够搜索其中的一种,并从第三种中检索其他2条信息:

class group_lookup_dict:
    def __init__(self):
        self.groups = []

    def add(self, new_group):
        self.groups.append(new_group)

    def lookup(self, key):
        for group in self.groups:
            if key in group.values():
                return group

class group_lookup_dict: # edit: this one's better
    def __init__(self):
        self.main_dict = {}

    def add(self, new_group):
        if type(new_group) is dict:     # it's a dict
            iterator = new_group.values()
        else:                           # it's a set (or list, tuple, etc...)
            iterator = iter(new_group)
        for val in iterator:
            self.main_dict[val] = new_group

    def lookup(self, key):
        return self.main_dict[key]

my_group_lookup_dict = group_lookup_dict()

example_group = {"char": "&", "bits": "00100110", "name": "CHAR_AMPERSAND"} # https://mil.ufl.edu/3744/docs/lcdmanual/characterset.html
my_group_lookup_dict.add(example_group)

print(my_set_lookup_dict.lookup("&"))
>>> {'char': '&', 'bits': '00100110', 'name': 'CHAR_AMPERSAND'}
# also acceptable would be: {'&', '00100110', 'CHAR_AMPERSAND'}

编辑:上面的代码正是我想要的。我只是很好奇,是否有某种流行的数据结构可以类似地使用,而不必记住类定义保存在哪个文件中,或者在简单的情况下再次将其重写时可以使用它。

from collections import my_cool_group_lookup_dict

...就足够了。

0 个答案:

没有答案