質問するログイン新規登録

回答編集履歴

1

修正

2019/08/24 01:27

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -4,20 +4,35 @@
4
4
  from itertools import groupby
5
5
 
6
6
  src = [
7
- ['a', 'b', 'c'], ['d', 'e'], ['f', 'g', 'h'], ['d', 'e'],
7
+ ['a', 'b', 'c'], ['m', 'n'], ['o'],
8
- ['i', 'j', 'k', 'l'], ['m', 'n'], ['o']
8
+ ['d', 'e'], ['f', 'g', 'h'], ['d', 'e'],
9
+ ['i', 'j', 'k', 'l'],
9
10
  ]
10
11
 
12
+
11
13
  data = sum(
14
+ sorted(
12
- [list(sorted(g)) for _, g in groupby(sorted(src, key=lambda x: len(x)), key=lambda x: len(x))],
15
+ [sorted(list(g), key=lambda x: x[0]) for k, g in groupby(sorted(src, key=lambda x: len(x)), key=lambda x: len(x))],
16
+ key= lambda x: (len(x), x[0])),
13
17
  []
14
- )
18
+ )
15
19
  print(data)
16
20
 
17
21
  print()
18
22
  for k, g in groupby(sorted(src, key=lambda x: len(x)), key=lambda x: len(x)):
23
+ print(k,sorted(list(g), key=lambda x: x[0]))
24
+
25
+ print()
26
+ g = [sorted(list(g), key=lambda x: x[0]) for k, g in groupby(sorted(src, key=lambda x: len(x)), key=lambda x: len(x))]
27
+ print(g)
28
+
29
+ print()
30
+ g = sorted(g, key=lambda x: [len(x), x[0][0]])
31
+ print(g)
32
+
33
+ print()
19
- print(k, list(g))
34
+ print(sum(g, []))
20
35
  ```
21
36
 
22
37
  実行例
23
- ![イメージ説明](af97b9161890c7184cd54c36760c6980.png)
38
+ ![イメージ説明](8fd4c1b3adacdd6000fb2f6b1105f646.png)