对于我的答案,我需要一些关于最佳和良好解决方案的帮助。
我输入了这样的字典:
a = {
(1, 1403): {1:0.1, 2:0.1, 3:0.2},
(1, 1412): {1:0.1, 2:0.1, 3:0.2},
(1, 1411): {1:0.1, 2:0.1, 3:0.2},
(1, 1402): {1:0.1, 2:0.1, 3:0.2},
(1, 1411): {1:0.1, 2:0.1, 3:0.2},
(2, 1501): {1:0.1, 2:0.1, 3:0.2},
(2, 1511): {1:0.1, 2:0.1, 3:0.2},
(2, 1700): {1:0.1, 2:0.1, 3:0.2},
(2, 1120): {1:0.1, 2:0.1, 3:0.2},
(2, 2133): {1:0.1, 2:0.1, 3:0.2},
(2, 2130): {1:0.1, 2:0.1, 3:0.2},
(2, 901): {1:0.1, 2:0.1, 3:0.2},
(3, 1111): {1:0.1, 2:0.1, 3:0.2},
}
我想要像这样输出:
{1: { 1403: {1: 0.1, 2: 0.1, 3: 0.2},
1402: {1: 0.1, 2: 0.1, 3: 0.2},
1411: {1: 0.1, 2: 0.1, 3: 0.2},
1412: {1: 0.1, 2: 0.1, 3: 0.2}},
2: {1120: {1: 0.1, 2: 0.1, 3: 0.2},
2130: {1: 0.1, 2: 0.1, 3: 0.2},
1700: {1: 0.1, 2: 0.1, 3: 0.2},
901: {1: 0.1, 2: 0.1, 3: 0.2},
1511: {1: 0.1, 2: 0.1, 3: 0.2},
1501: {1: 0.1, 2: 0.1, 3: 0.2},
2133: {1: 0.1, 2: 0.1, 3: 0.2}},
3: {1111: {1: 0.1, 2: 0.1, 3: 0.2}}}
我已经完成了以下代码
data_dict = defaultdict(dict)
for (a,b), c in a.items():
data_dict[a].update({b:c})
我已经在上面回答了我想要的输出,这是好方法吗? 有没有更好的解决方案来实现结果(以pythonic方式),必须是最佳的。
答案 0 :(得分:1)
一种方法是使用dict理解,如PEP 274中所述,它可能更加pythonic。
但是,天真的解决方案result = {a: {b: c} for (a, b), c in a.items()}
无法正常工作。 (它将为您提供一个包含三个键的字典,每个键包含一个字典)。
在dict理解中可能存在一些允许所需行为的技巧,但似乎代码不会变得非常易读或可理解,从而使其非常 unpythonic 。
简而言之,您自己的解决方案将是非常pythonic。