回答編集履歴
2
Update
test
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
```python
|
2
2
|
import random
|
3
|
+
from collections import defaultdict
|
3
4
|
|
4
5
|
lst = [{'a': [1, 2, 3]}, {'a': [4, 5, 6, 7, 8]}]
|
5
6
|
N = 800000
|
6
|
-
counts =
|
7
|
+
counts = defaultdict(int)
|
7
8
|
weights = [len(d['a']) for d in lst]
|
8
9
|
|
9
10
|
for _ in range(N):
|
10
11
|
i = random.choice(random.choices(lst, weights)[0]['a'])
|
11
12
|
counts[i] += 1
|
12
13
|
|
13
|
-
print(counts)
|
14
|
+
print(dict(sorted(counts.items())))
|
14
15
|
|
15
16
|
#
|
16
|
-
{1: 99
|
17
|
+
{1: 99954, 2: 99716, 3: 100201, 4: 99556, 5: 100484, 6: 99676, 7: 100434, 8: 99979}
|
17
18
|
```
|
18
19
|
|
1
Update
test
CHANGED
@@ -3,17 +3,16 @@
|
|
3
3
|
|
4
4
|
lst = [{'a': [1, 2, 3]}, {'a': [4, 5, 6, 7, 8]}]
|
5
5
|
N = 800000
|
6
|
+
counts = {k: 0 for d in lst for k in d['a']}
|
6
7
|
weights = [len(d['a']) for d in lst]
|
7
|
-
flat = sum([d['a'] for d in lst], [])
|
8
|
-
counts = [0] * len(flat)
|
9
8
|
|
10
9
|
for _ in range(N):
|
11
10
|
i = random.choice(random.choices(lst, weights)[0]['a'])
|
12
|
-
counts[
|
11
|
+
counts[i] += 1
|
13
12
|
|
14
13
|
print(counts)
|
15
14
|
|
16
15
|
#
|
17
|
-
|
16
|
+
{1: 99828, 2: 100291, 3: 100144, 4: 99913, 5: 100469, 6: 100009, 7: 99659, 8: 99687}
|
18
17
|
```
|
19
18
|
|