I have two lists:
managers = ['john', 'karl', 'ricky'] sites = ['site1', 'site2', 'site3']
I also have a json file for each manager:
{
  "results": [
    {
      "id": "employee1",
      "user": {
        "location": "site1"
      }
    },
    {
      "id": "employee2",
      "user": {
        "location": "site1"
      }
    },
    {
      "id": "employee3",
      "user": {
        "location": "site2"
      }
    },
    {
      "id": "employee4",
      "user": {
        "location": "site3"
      }
    }
  ]
}
So now, I want to create a dictionary by to categorize data by site! which is making it challenging for me. The output I need is to show employees for each site.
Here is the code I have:
myDict = dict()
for j in managers:
    for i in range(len(sites)):
        with open(""+j+"-data.json", 'r') as jasonRead:
            json_object = json.loads(jasonRead.read())
            for result in json_object['results']:
                site = (result['user']['location'])
            for employee, manager in map(str.split, str(site), managers[i]):
                myDict.setdefault(managers[i], []).append(site)
The error I get:
  File "test.py", line 25, in <module>
    for employee, manager in map(str.split, str(site), managers[i]):
ValueError: need more than 1 value to unpack
Advertisement
Answer
Instead of looping over sites, just test if the site of the employee is in the list.
The keys of the resulting dictionary should be the site names, not the manager names.
mydict = {}
for manager in managers:
    with open(f'{manager}-data.json') as jasonRead:
        json_object = json.load(jasonRead)
    for result in json_object['results']:
        site = result['user']['location']
        if site in sites:
            mydict.setdefault(site, []).append(result['id'])
print(mydict)