質問編集履歴

2

ご回答を受けて試したことの追記

2018/08/07 01:40

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -57,5 +57,69 @@
57
57
  }
58
58
  ```
59
59
 
60
+ ### ご回答を受けて試したこと
61
+ 関数に切り出してみたのですが、うまく切り出すことができず、
62
+ エラーが出てしまいました。関数内でも、alphとtarget_alphを使用する必要があるため、関数を用いてもうまく効率化する術がわかりません。
63
+ ```python
64
+ #!/usr/bin/env python
65
+ # coding: utf-8
66
+
67
+ data = {
68
+ 'A':[1, 3, 5, 2, 1, 8, 9],
69
+ 'B':[9, 4, 3],
70
+ 'C':[8, 5, 5, 6, 1]
71
+ }
72
+
73
+ output = {}
74
+
75
+ for alph, nums in data.items():
76
+ avg = {}
77
+ my_list = nums
78
+ for target_alph, target_nums in data.items():
79
+ target_list = target_nums
80
+ """
81
+ if alph == target_alph:
82
+ continue
83
+ max_nums = []
84
+
85
+ for i in my_list:
86
+ max_num = 0
87
+ for j in target_list:
88
+ result = i * j
89
+ if result is not None and result > max_num:
90
+ max_num = result
91
+ max_nums.append(max_num)
92
+ """
93
+ avg[target_alph] = avg_of_max(my_list, target_list)
94
+ output[alph] = avg
95
+ print(output)
96
+
97
+
98
+ def avg_of_max_nums(my_list, target_list):
99
+ for alph, nums in data.items():
100
+ for target_alph, target_nums in data.items():
101
+ if alph == target_alph:
102
+ continue
103
+ max_nums = []
104
+
105
+ for i in my_list:
106
+ max_num = 0
107
+ for j in target_list:
108
+ result = i * j
109
+ if result is not None and result > max_num:
110
+ max_num = result
111
+ max_nums.append(max_num)
112
+ return sum(max_nums) / len(max_nums)
113
+ ```
114
+
115
+ エラー文
116
+ ```
117
+ $ python sample.py
118
+ File "sample.py", line 49
119
+ return sum(max_nums) / len(max_nums)
120
+ ^
121
+ IndentationError: unindent does not match any outer indentation level
122
+ ```
123
+
60
124
  ### 補足情報(FW/ツールのバージョンなど)
61
125
  python3.6

1

該当のコードの修正

2018/08/07 01:40

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -41,7 +41,7 @@
41
41
  max_num = 0
42
42
  for j in target_list:
43
43
  result = i * j
44
- if result is not None and result:
44
+ if result is not None and result > max_num:
45
45
  max_num = result
46
46
  max_nums.append(max_num)
47
47
  avg[target_alph] = sum(max_nums) / len(max_nums)
@@ -51,9 +51,9 @@
51
51
  出力(一行だと長いため、改行してあります)
52
52
  ```
53
53
  {
54
- 'A': {'B': 12.428571428571429, 'C': 4.142857142857143},
54
+ {'A': {'B': 37.285714285714285, 'C': 33.142857142857146},
55
- 'B': {'A': 48.0, 'C': 5.333333333333333},
55
+ 'B': {'A': 48.0, 'C': 42.666666666666664},
56
- 'C': {'A': 45.0, 'B': 15.0}
56
+ 'C': {'A': 45.0, 'B': 45.0}}
57
57
  }
58
58
  ```
59
59