实现结果输出的最佳pythonic方法

实现结果输出的最佳pythonic方法,python,list,dictionary,Python,List,Dictionary,我需要一些关于我的答案的最佳和好的解决方案的帮助 我有这样的输入命令: 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}

我需要一些关于我的答案的最佳和好的解决方案的帮助

我有这样的输入命令:

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}}} 
我想要这样的输出:

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})
我已经回答了以上问题,以实现我的期望输出,这是一个好办法吗?
是否有更好的解决方案(以肾盂法)来达到效果,必须是最优的。

一种方法是使用dict理解,如中所述,这可能更符合肾盂法。 但是,a.items()}中的(a,b),c的原始解决方案
result={a:{b:c}无法按预期工作。(它会给你一本有三个键的字典,每个键包含一本字典)

在dict理解中可能会有一些技巧来允许所需的行为,但代码似乎不会变得非常可读或可理解,从而使其非常不和谐


简言之,您自己的解决方案将非常有吸引力。

在我看来不错。没有比这更好的解决方案了吗@DiMaybe其他人可能会有更好的方法,但我会像你那样做,它很容易阅读。@Ding我认为好的极客会告诉你更好的方法。
data\u dict[a]。更新({b:c})
有点迟钝
data_dict[a][b]=c
具有相同的含义。