如果我有以下字典:
{"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)
也许有人可以通过字典理解让它以“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'}}