回答編集履歴

1

追記

2018/04/25 08:59

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -23,3 +23,33 @@
23
23
 
24
24
 
25
25
  ところで質問文のコード、文字列のクオートが‘’で囲まれているのはおかしいし、全角スペースがインデントに混ざっていました。いろいろ気を配ったほうが良いと思いました。
26
+
27
+
28
+
29
+ ### 追記
30
+
31
+ 質問文を編集されたので、それに対応したものを。
32
+
33
+ ```python
34
+
35
+ dct = {"A":{"a":0.02,"b":0.03,"c":0.01,"d":[0.04,0.05]},"B":{"a":0.4,"b":0.2,"c":0.8,"e":0.9},"C":{"a":0.1,"b":0.07,"h":0.6,"j":0.9},"D":{"h":1.2,"j":1.5,"k":[1.3,1.8],"l":1.8},"E":{"o":11,"p":12,"q":16,"r":18}}
36
+
37
+
38
+
39
+ for key,value in sorted(dct.items(), key=lambda x:x[0]): # せっかくなのでABC順に並べる
40
+
41
+ print(key)
42
+
43
+ value_count = 0
44
+
45
+ for k, v in sorted([(k, v) for k,v in value.items()
46
+
47
+ if type(v) is not list], # ここに型チェック入れた
48
+
49
+ key=lambda x: x[1])[:2]:
50
+
51
+ print(str(k) + ": " + str(v))
52
+
53
+ ```
54
+
55
+ 質問文に掲載された位置で型チェックしても大した意味はなく、子辞書の値を型チェックしてやる必要があります。とりあえず値がlistのものはリスト内包表記でfilterして取り除きました。