'Create a nested data dictionary in Python

I have the data as below

{
  "employeealias": "101613177", 
  "firstname": "Lion", 
  "lastname": "King", 
  "date": "2022-04-21", 
  "type": "Thoughtful Intake", 
  "subject": "Email: From You Success Coach"
}

{
  "employeealias": "101613177", 
  "firstname": "Lion",
  "lastname": "King",
  "date": "2022-04-21",
  "type": null,
  "subject": "Call- CDL options & career assessment"
}

I need to create a dictionary like the below:

enter image description here



Solution 1:[1]

You have to create new dictionary with list and use for-loop to check if exists employeealias, firstname, lastname to add other information to sublist. If item doesn't exist then you have to create new item with employeealias, firstname, lastname and other information.

data = [
{"employeealias":"101613177","firstname":"Lion","lastname":"King","date":"2022-04-21","type":"Thoughtful Intake","subject":"Email: From You Success Coach"},
{"employeealias":"101613177","firstname":"Lion","lastname":"King","date":"2022-04-21","type":"null","subject":"Call- CDL options & career assessment"},
]

result = {'interactions': []}

for row in data:
    found = False
    for item in result['interactions']:
        if (row["employeealias"] == item["employeealias"]
           and row["firstname"] == item["firstname"]
           and row["lastname"] == item["lastname"]):
            item["activity"].append({
               "date": row["date"],
               "subject": row["subject"],
               "type": row["type"],
            })
            found = True
            break
        
    if not found:
        result['interactions'].append({
            "employeealias": row["employeealias"],
            "firstname": row["firstname"],
            "lastname": row["lastname"],
            "activity": [{
                           "date": row["date"],
                           "subject": row["subject"],
                           "type": row["type"],
                        }]
        })
            
print(result)            

EDIT:

You read lines as normal text but you have to convert text to dictonary using module json

import json

data = [] 

with open("/Users/Downloads/amazon_activity_feed_0005_part_00.json") as a_file:      
    for line in a_file:         
        line = line.strip()
        dictionary = json.loads(line)         
        data.append(dictionary)

print(data)

Solution 2:[2]

You can create a nested dictionary inside Python like this: student = {name : "Suman", Age = 20, gender: "male",{class : 11, roll no: 12}}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Suman Bhandari