如何将字典的值转换为字典集合

3
我正在尝试解决一些图论问题,但我卡在了一半。我有一个Python字典,其值是集合,但我想将原始字典值(即集合)转换为另一个字典,使得每个集合中的值都成为一个新的键,并且该键具有另一个为1的值。我认为这就是所谓的嵌套字典-不确定。
我循环遍历了dict.values(),将其分配给变量xxx,并使用dict.fromkeys(xxx, 1)代码,它有效了,但我无法将结果集成回原始字典。
这是一个字典示例:
d = {'35': {'1', '37', '36', '71'}, '37': {'1', '35'}} 

我希望输出结果看起来像:

d = {35: {1 : 1, 37 : 1, 36 : 1, 71 : 1}, 37: {1 : 1, 35 : 1}} 

如果你注意到了,原始的字典值变成了自己的字典,并且撇号('')消失了。

请问有人可以帮助我或者给我一些建议吗?谢谢。

2个回答

1
你只需要一点列表推导式:

def convert(input):
    return {key: {val: 1 for val in vals} for key, vals in input.items()}

print(convert({'35': {'1', '37', '36', '71'}, '37': {'1', '35'}}))
# {'35': {'1': 1, '37': 1, '36': 1, '71': 1}, '37': {'1': 1, '35': 1}}

砰!非常感谢。我更改为使用int(key)和int(val)将字符串转换为整数。谢谢。 - vic

0

你已经快完成了。只需用 int 包装键和值:

{int(k):dict.fromkeys(map(int, v), 1) for k, v in d.items()}

输出:

{35: {37: 1, 71: 1, 36: 1, 1: 1}, 37: {35: 1, 1: 1}}

感谢您宝贵的贡献。 - vic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接