回答編集履歴
8
原因説明追記
test
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
+
if文でkey_dateがなかったときしか処理してないのが原因です。あったときの処理も書きましょう。
|
2
|
+
|
3
|
+
|
4
|
+
|
1
|
-
all関数かany関数を使うと
|
5
|
+
all関数かany関数を使うと楽ですよ。
|
2
6
|
|
3
7
|
allなら「すべてにキーがない」、anyなら「notどれかにキーがある」=「どれにもキーがない」。
|
4
8
|
|
7
変数名変更
test
CHANGED
@@ -44,9 +44,9 @@
|
|
44
44
|
|
45
45
|
frames_list = []
|
46
46
|
|
47
|
-
for i,
|
47
|
+
for i, d in enumerate(date_list):
|
48
48
|
|
49
|
-
key_date = f"{
|
49
|
+
key_date = f"{d['date']:%Y-%m-%d}"
|
50
50
|
|
51
51
|
if all(key_date not in day_dict for day_dict in frames_list):
|
52
52
|
|
@@ -56,7 +56,7 @@
|
|
56
56
|
|
57
57
|
frames_list.append(day_dict)
|
58
58
|
|
59
|
-
day_dict[key_date].append({'id':
|
59
|
+
day_dict[key_date].append({'id': d['id'], 'time': d['time']})
|
60
60
|
|
61
61
|
pprint(frames_list)
|
62
62
|
|
@@ -108,9 +108,9 @@
|
|
108
108
|
|
109
109
|
frames_list = []
|
110
110
|
|
111
|
-
for i,
|
111
|
+
for i, d in enumerate(date_list):
|
112
112
|
|
113
|
-
key_date = f"{
|
113
|
+
key_date = f"{d['date']:%Y-%m-%d}"
|
114
114
|
|
115
115
|
for day_dict in frames_list:
|
116
116
|
|
@@ -126,6 +126,6 @@
|
|
126
126
|
|
127
127
|
frames_list.append(day_dict)
|
128
128
|
|
129
|
-
day_dict[key_date].append({'id':
|
129
|
+
day_dict[key_date].append({'id': d['id'], 'time': d['time']})
|
130
130
|
|
131
131
|
```
|
6
all/anyを使わない方法を追記
test
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
all関数かany関数を使い
|
1
|
+
all関数かany関数を使うといいですよ。
|
2
2
|
|
3
3
|
allなら「すべてにキーがない」、anyなら「notどれかにキーがある」=「どれにもキーがない」。
|
4
|
+
|
5
|
+
使わない方法も最後に書いておきます。
|
4
6
|
|
5
7
|
|
6
8
|
|
@@ -95,3 +97,35 @@
|
|
95
97
|
{'2020-01-29': [{'id': 109, 'time': '09:00'}, {'id': 110, 'time': '16:00'}]}]
|
96
98
|
|
97
99
|
```
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
all/any を使わない処理方法
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
```python
|
108
|
+
|
109
|
+
frames_list = []
|
110
|
+
|
111
|
+
for i, row in enumerate(date_list):
|
112
|
+
|
113
|
+
key_date = f"{row['date']:%Y-%m-%d}"
|
114
|
+
|
115
|
+
for day_dict in frames_list:
|
116
|
+
|
117
|
+
if key_date in day_dict:
|
118
|
+
|
119
|
+
break
|
120
|
+
|
121
|
+
else:
|
122
|
+
|
123
|
+
print("{}:データ追加".format(i))
|
124
|
+
|
125
|
+
day_dict = {key_date: []}
|
126
|
+
|
127
|
+
frames_list.append(day_dict)
|
128
|
+
|
129
|
+
day_dict[key_date].append({'id': row['id'], 'time': row['time']})
|
130
|
+
|
131
|
+
```
|
5
コメント削除
test
CHANGED
@@ -44,11 +44,7 @@
|
|
44
44
|
|
45
45
|
for i, row in enumerate(date_list):
|
46
46
|
|
47
|
-
# キーとなる日付を設定
|
48
|
-
|
49
47
|
key_date = f"{row['date']:%Y-%m-%d}"
|
50
|
-
|
51
|
-
|
52
48
|
|
53
49
|
if all(key_date not in day_dict for day_dict in frames_list):
|
54
50
|
|
@@ -57,12 +53,6 @@
|
|
57
53
|
day_dict = {key_date: []}
|
58
54
|
|
59
55
|
frames_list.append(day_dict)
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
# レコードの日付とkey_dateが一致したデータを格納して出力用リストに追加
|
64
|
-
|
65
|
-
# 日付ごとのオブジェクトフォーマット(ID, 日付, 時間)
|
66
56
|
|
67
57
|
day_dict[key_date].append({'id': row['id'], 'time': row['time']})
|
68
58
|
|
4
説明追記
test
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
all関数かany関数を使いましょう。
|
2
|
+
|
3
|
+
allなら「すべてにキーがない」、anyなら「notどれかにキーがある」=「どれにもキーがない」。
|
4
|
+
|
5
|
+
|
6
|
+
|
1
7
|
```python
|
2
8
|
|
3
9
|
import datetime
|
3
実行結果追記
test
CHANGED
@@ -63,3 +63,39 @@
|
|
63
63
|
pprint(frames_list)
|
64
64
|
|
65
65
|
```
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
実行結果
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
```
|
74
|
+
|
75
|
+
0:データ追加
|
76
|
+
|
77
|
+
5:データ追加
|
78
|
+
|
79
|
+
9:データ追加
|
80
|
+
|
81
|
+
[{'2020-01-27': [{'id': 100, 'time': '09:00'},
|
82
|
+
|
83
|
+
{'id': 101, 'time': '10:00'},
|
84
|
+
|
85
|
+
{'id': 102, 'time': '14:00'},
|
86
|
+
|
87
|
+
{'id': 103, 'time': '18:00'},
|
88
|
+
|
89
|
+
{'id': 104, 'time': '20:00'}]},
|
90
|
+
|
91
|
+
{'2020-01-28': [{'id': 105, 'time': '11:00'},
|
92
|
+
|
93
|
+
{'id': 106, 'time': '15:00'},
|
94
|
+
|
95
|
+
{'id': 107, 'time': '18:00'},
|
96
|
+
|
97
|
+
{'id': 108, 'time': '22:00'}]},
|
98
|
+
|
99
|
+
{'2020-01-29': [{'id': 109, 'time': '09:00'}, {'id': 110, 'time': '16:00'}]}]
|
100
|
+
|
101
|
+
```
|
2
コード修正
test
CHANGED
@@ -1 +1,65 @@
|
|
1
|
+
```python
|
2
|
+
|
3
|
+
import datetime
|
4
|
+
|
5
|
+
from pprint import pprint
|
6
|
+
|
7
|
+
|
8
|
+
|
1
|
-
|
9
|
+
date_list = [
|
10
|
+
|
11
|
+
{'id': 100, 'date': datetime.date(2020, 1, 27), 'time': '09:00'},
|
12
|
+
|
13
|
+
{'id': 101, 'date': datetime.date(2020, 1, 27), 'time': '10:00'},
|
14
|
+
|
15
|
+
{'id': 102, 'date': datetime.date(2020, 1, 27), 'time': '14:00'},
|
16
|
+
|
17
|
+
{'id': 103, 'date': datetime.date(2020, 1, 27), 'time': '18:00'},
|
18
|
+
|
19
|
+
{'id': 104, 'date': datetime.date(2020, 1, 27), 'time': '20:00'},
|
20
|
+
|
21
|
+
{'id': 105, 'date': datetime.date(2020, 1, 28), 'time': '11:00'},
|
22
|
+
|
23
|
+
{'id': 106, 'date': datetime.date(2020, 1, 28), 'time': '15:00'},
|
24
|
+
|
25
|
+
{'id': 107, 'date': datetime.date(2020, 1, 28), 'time': '18:00'},
|
26
|
+
|
27
|
+
{'id': 108, 'date': datetime.date(2020, 1, 28), 'time': '22:00'},
|
28
|
+
|
29
|
+
{'id': 109, 'date': datetime.date(2020, 1, 29), 'time': '09:00'},
|
30
|
+
|
31
|
+
{'id': 110, 'date': datetime.date(2020, 1, 29), 'time': '16:00'},
|
32
|
+
|
33
|
+
]
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
frames_list = []
|
38
|
+
|
39
|
+
for i, row in enumerate(date_list):
|
40
|
+
|
41
|
+
# キーとなる日付を設定
|
42
|
+
|
43
|
+
key_date = f"{row['date']:%Y-%m-%d}"
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
if all(key_date not in day_dict for day_dict in frames_list):
|
48
|
+
|
49
|
+
print("{}:データ追加".format(i))
|
50
|
+
|
51
|
+
day_dict = {key_date: []}
|
52
|
+
|
53
|
+
frames_list.append(day_dict)
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
# レコードの日付とkey_dateが一致したデータを格納して出力用リストに追加
|
58
|
+
|
59
|
+
# 日付ごとのオブジェクトフォーマット(ID, 日付, 時間)
|
60
|
+
|
61
|
+
day_dict[key_date].append({'id': row['id'], 'time': row['time']})
|
62
|
+
|
63
|
+
pprint(frames_list)
|
64
|
+
|
65
|
+
```
|
1
間違えたので再編集中
test
CHANGED
@@ -1,63 +1 @@
|
|
1
|
-
```python
|
2
|
-
|
3
|
-
import datetime
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
間違えたので再編集します。
|
8
|
-
|
9
|
-
{'id': 100, 'date': datetime.date(2020, 1, 27), 'time': '09:00'},
|
10
|
-
|
11
|
-
{'id': 101, 'date': datetime.date(2020, 1, 27), 'time': '10:00'},
|
12
|
-
|
13
|
-
{'id': 102, 'date': datetime.date(2020, 1, 27), 'time': '14:00'},
|
14
|
-
|
15
|
-
{'id': 103, 'date': datetime.date(2020, 1, 27), 'time': '18:00'},
|
16
|
-
|
17
|
-
{'id': 104, 'date': datetime.date(2020, 1, 27), 'time': '20:00'},
|
18
|
-
|
19
|
-
{'id': 105, 'date': datetime.date(2020, 1, 28), 'time': '11:00'},
|
20
|
-
|
21
|
-
{'id': 106, 'date': datetime.date(2020, 1, 28), 'time': '15:00'},
|
22
|
-
|
23
|
-
{'id': 107, 'date': datetime.date(2020, 1, 28), 'time': '18:00'},
|
24
|
-
|
25
|
-
{'id': 108, 'date': datetime.date(2020, 1, 28), 'time': '22:00'},
|
26
|
-
|
27
|
-
{'id': 109, 'date': datetime.date(2020, 1, 29), 'time': '09:00'},
|
28
|
-
|
29
|
-
{'id': 110, 'date': datetime.date(2020, 1, 29), 'time': '16:00'},
|
30
|
-
|
31
|
-
]
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
frames_list = []
|
36
|
-
|
37
|
-
for i, row in enumerate(date_list):
|
38
|
-
|
39
|
-
# キーとなる日付を設定
|
40
|
-
|
41
|
-
key_date = f"{row['date']:%Y-%m-%d}"
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
if all(key_date not in day_dict for day_dict in frames_list):
|
46
|
-
|
47
|
-
print(f"{i}:データ追加")
|
48
|
-
|
49
|
-
day_dict = {key_date: []}
|
50
|
-
|
51
|
-
frames_list.append(day_dict)
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
# レコードの日付とkey_dateが一致したデータを格納して出力用リストに追加
|
56
|
-
|
57
|
-
# 日付ごとのオブジェクトフォーマット(ID, 日付, 時間)
|
58
|
-
|
59
|
-
day_dict[key_date].append({'id': row['id'], 'time': row['time']})
|
60
|
-
|
61
|
-
print(frames_list)
|
62
|
-
|
63
|
-
```
|