persons = [{"ID": 1001, "NAME": "YAMANE", "AGE": 31},
           {"ID": 1001, "NAME": "SHIMADA", "AGE": 51},
           {"ID": 1002, "NAME": "AMANE", "AGE": 13},
           {"ID": 1003, "NAME": "OKADA", "AGE": 21}]

が入っています。注目点としてIDは重複します。

こちらを↓のような形にしたいです。

persons[[1001][{"NAME": "YAMANE", "AGE": 31},{"NAME": "SHIMADA", "AGE": 51}],
      [1002][{"NAME": "AMANE", "AGE": 13}],
      [1003][{"NAME": "OKADA", "AGE": 21}]]

pymysqlのfetchallを使用すると、データベースの行ごとにdict形式で配列されます。

私が試して失敗した例:

person_box = []
for person in persons:
    person_box[person['ID']] = person