- まずはご自身で試してみましょう。やってみてうまくいかないことを質問しましょう。
- 「別の質問」のURLをこの質問に記載しましょう。
リスト型のデータを以下のように変更したいと思っています。
変更前データ
data =[ { "id": 1, "fruits": "apple", "cd": 1, "cd_val": "Hokkaido", }, { "id": 1, "fruits": "apple", "cd": 2, "cd_val": "Aomori" }, { "id": 1, "fruits": "apple", "cd": 4, "cd_val": "Iwate", }, { "id": 2, "fruits": "banana", "cd": 5, "cd_val": "Yamagata", }, { "id": 3, "fruits": "grape", "cd": 3, "cd_val": "Akita", }, { "id": 3, "fruits": "grape", "cd": 6, "cd_val": "Miyagi", }, { "id": 3, "fruits": "grape", "cd": 7, "cd_val": "Niigata", }, ]
変更後データ
result =[ { "id": 1, "fruits": "apple", "cd": [1,2,4], "cd_val": ["Hokkaido","Aomori","Iwate"] }, { "id": 2, "fruits": "banana", "cd": [5], "cd_val": ["Yamagata"] }, { "id": 3, "fruits": "grape", "cd": [3,6,7], "cd_val": ["Akita","Miyagi","Niigata"] } ]
別の質問で教えてもらったコード
from itertools import groupby result = [ {'id': k[0], 'fruits': k[1], 'cd': [e['cd'] for e in group]} for k, group in groupby(data, lambda e: (e['id'], e['fruits'])) ] print(result)
>>> print(result) [{'id': 1, 'fruits': 'apple', 'cd': [1, 2, 4]}, {'id': 2, 'fruits': 'banana', 'cd': [5]}, {'id': 3, 'fruits': 'grape', 'cd': [3, 6, 7]}]
groupby は使用した場合は、条件が複数("cd"と"cd_val")あるときは書くのが難しいでしょうか。
回答1件
あなたの回答
tips
プレビュー