python – 如何得到像这样的形式的defautdict(set):{str:{str:int}}

我有一本这样的字典

{('a','b'):3, ('b','c'): 2, ('a','c'): 5}

我想将它转换为这种形式:

{'b': {'c': 2}, 'a': {'c': 5, 'b': 3}}  

这意味着我必须建立一个像这种形式的字典:

   d:{(str1,str2):int}   -->     {str1 : { str2 : int } }

最佳答案 您可能不希望基于set的defaultdict,而是基于dict.

dic = {('a','b'):3, ('b','c'): 2, ('a','c'): 5}
dic2 = defaultdict(dict)
for j,k in dic:
    dic2[j][k] = dic[(j,k)]
## dic2 = defaultdict(<type 'dict'>, {'a': {'c': 5, 'b': 3}, 'b': {'c': 2}})

另外,d.keys()已经可以迭代,不需要调用list(d.keys()).实际上,要迭代字典d的键,最好是在d中调用键:

点赞