Python反向字典键值引用关系

问题描述 投票:0回答:1

如果我有以下字典:

{"1": {"2", "3"}, "2": {"3", "4"}, "3": {"2", "4"}}

在这个字典中,键引用集合中的值。

如何构建一个新字典来定义对上述值的引用:

{"1": {}, "2": {"1", "3"}, "3": {"1", "2"}, "4": {"2", "3"}}

这就是我目前所做的:

    references = dict()
    urls = dict()
    for k,v in files:
        result[k] = 1 / len(files)
        if len(v) > 0:
            urls[k] = len(v)
        else:
            urls[k] = len(files)
        if len(v) > 0:
            for p in v:
                references[p].add(k)
        else:
            references[k].add(k)
            for p,_ in references:
                references[p].add(k)
python dictionary python-3.12
1个回答
0
投票

也许有人可以通过字典理解让它以“Pythonic”的方式工作,但我不能处理值中的重复。

没有明显的方法来获取“1”,因为它没有出现在原始值中。另外,不保证特定顺序。

def invert( d ):
    tcid = dict()
    for _, s in d.items():
        for x in s: tcid[x] = set()
    for k, s in d.items():
        for x in s: tcid[x].add( k )
    return tcid

d = {"1": {"2", "3"}, "2": {"3", "4"}, "3": {"2", "4"}}
e = invert( d )
print( d )
print( e )

输出:

{'1': {'2', '3'}, '2': {'3', '4'}, '3': {'2', '4'}}
{'2': {'3', '1'}, '3': {'2', '1'}, '4': {'2', '3'}}
© www.soinside.com 2019 - 2024. All rights reserved.