python:切换字典键结构

2024-04-16 17:41:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典:

d = {'a1':{'b1':1, 'b2':2}, 'a2':{'b1':3, 'b2':4}}`.

我想切换字典的ab键。换句话说,我希望得到的字典是:

dd = {'b1':{'a1':1, 'a2':3}, 'b2':{'a1':2, 'a2':4}}

不使用循环。你知道吗

下面是我现在使用的循环:

d = {'a1':{'b1':1, 'b2':2}, 'a2':{'b1':3, 'b2':4}}
from collections import defaultdict
dd=defaultdict(dict)

for k in d.keys():
   for tmp_k in d.get(k).keys():
      dd[tmp_k][k] =d[k][tmp_k]
print dict(dd)

这个能做成一行吗?你知道吗


Tags: infromimporta2for字典a1keys
1条回答
网友
1楼 · 发布于 2024-04-16 17:41:21

我想你说的without for loops是指理解。有一种可能性:

代码:

这可以压缩到一行,但我认为两行更清晰一些,而且性能可能不会差很多。你知道吗

import itertools as it

d = {'a1': {'b1': 1, 'b2': 2}, 'a2': {'b1': 3, 'b2': 4}}

new_keys = set(it.chain.from_iterable(i.keys() for i in d.values()))
new_dict = {k: {i: v[k] for i, v in d.items()} for k in new_keys}

print(new_dict)

结果:

{'b1': {'a1': 1, 'a2': 3}, 'b2': {'a1': 2, 'a2': 4}}

相关问题 更多 >