我有一本这样的字典
{('a','b'):3, ('b','c'): 2, ('a','c'): 5}
我想将其转换为此格式:
{'b': {'c': 2}, 'a': {'c': 5, 'b': 3}}
这意味着我必须建立一个像这种形式的字典:
d:{(str1,str2):int} --> {str1 : { str2 : int } }
答案 0 :(得分:4)
如何使用setdefault
:
d = {('a','b'):3, ('b','c'): 2, ('a','c'): 5}
out = {}
for k, v in d.iteritems():
out.setdefault(k[0], {}).setdefault(k[1], v)
print out
{'a': {'c': 5, 'b': 3}, 'b': {'c': 2}}
答案 1 :(得分:3)
您可能不希望defaultdict
基于set
,而是基于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
的键,最好只调用for key in d: