在集合字典中切换键和值

gol*_*ian 4 python dictionary

我有这样的字典:

d1 = {'0': {'a'}, '1': {'b'}, '2': {'c', 'd'}, '3': {'E','F','G'}}
Run Code Online (Sandbox Code Playgroud)

我想要这样的结果

d2 = {'a': '0', 'b': '1', 'c': '2', 'd': '2', 'E': '3', 'F': '3', 'G': '3'}
Run Code Online (Sandbox Code Playgroud)

所以我试过了

d2 = dict ((v, k) for k, v in d1.items())
Run Code Online (Sandbox Code Playgroud)

但是 value 被 set{} 包围,所以它不能很好地工作......有什么办法可以解决它吗?

yat*_*atu 6

您可以使用字典理解:

{v:k for k,vals in d1.items() for v in vals}
# {'a': '0', 'b': '1', 'c': '2', 'd': '2', 'E': '3', 'F': '3', 'G': '3'}
Run Code Online (Sandbox Code Playgroud)

请注意,您需要对此处每个键中的值进行额外级别的迭代才能获得平面字典。