r={}
for d in stat:
for k,v in d.iteritems():
nd = r.setdefault(k,[])
for tdk,tdv in v.iteritems():
q = filter(lambda x: tdk in x.iterkeys(),nd)
if not q:
q = {tdk:[]}
nd.append(q)
else: q = q[0]
q[tdk]+=tdv
print r
# prints {'state': [{'europe': ['germany', 'england', 'french', 'netherland']}, {'asian': ['japan', 'china']}]}
stat2 = {}
for s in stat:
for c in s.values():
for k, v in c.items():
if k in stat2:
stat2[k] += v
else:
stat2[k] = v # perhaps copying here
stat2
{'asian': ['japan', 'china'],
'europe': ['germany', 'england', 'french', 'netherland']}
ans = {}
for d1 in stat:
for k1, v1 in d1.items():
if k1 not in ans:
ans[k1] = []
for k2, v2 in v1.items():
for d2 in ans[k1]:
if k2 in d2.keys():
d2[k2].extend(v2)
break
else:
ans[k1].append({k2:v2})
天真的尝试:
在python 2.2中:
如果您使用的是python>;2.4,则可以使用defaultdict:
^{pr2}$如果你真的想:
考虑升级你的python版本,2.2是2001年发布的。。。!
下面是一个简单的答案,使用Python 2.2中提供的构造,没有什么特别的:
结果如预期:
^{pr2}$相关问题 更多 >
编程相关推荐