Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 Convert List of Dictionary to dictionary of dictionary list in python
#1
Hi ALl ,

Need your help in python code for the following output required. thanks in advance.

Source file:


[ { "Env" :"dit",
"id": 1,
"appId": "AP11232",
"health": true
},
{ "Env" :"dit",
"id": 2,
"appId": "AP11232",
"health": false
}
{
"Env" :"int",
"id": 1,
"appId": "AP11232",
"health": true
},
{
"Env" :"int",
"id": 2,
"appId": "AP11232",
"health": true
},
{
"Env" :"int",
"id": 3,
"appId": "AP11232",
"health": true
},
{
"Env" :"int",
"id": 4,
"appId": "AP11232",
"health": true
}
]

Output Required:


{
"dit": [
{
"id": 1,
"appId": "AP11232",
"health": true
},
{
"id": 2,
"appId": "AP11232",
"health": false
}
],
"int":[
{
"id": 1,
"appId": "AP11232",
"health": true
},
{
"id": 2,
"appId": "AP11232",
"health": true
},
{
"id": 3,
"appId": "AP11232",
"health": true
},
{
"id": 4,
"appId": "AP11232",
"health": true
}]
}
Quote
#2
Ok I hope this does the trick -
outputDict = {}

randomDict = [{ "Env" :"dit",
"id": 1,
"appId": "AP11232",
"health": True
},
{ "Env" :"dit",
"id": 2,
"appId": "AP11232",
"health": False
},
{
"Env" :"int",
"id": 1,
"appId": "AP11232",
"health": True
},
{
"Env" :"int",
"id": 2,
"appId": "AP11232",
"health": True
},
{
"Env" :"int",
"id": 3,
"appId": "AP11232",
"health": True
},
{
"Env" :"int",
"id": 4,
"appId": "AP11232",
"health": True
}
]

for Dict in randomDict:
    key = Dict['Env']
    outputDict.update({key : [{'id' : Dict['id'], 'health' : Dict['health'], 'appId' : Dict['appId']}]})
    
print(outputDict)

What do you need this for
Age Doesn't Matter, Your Passion Does
- Shreya Jain
Quote
#3
I observe that there is no comma in source file between second and third dictionary; true and false are not booleans but just names which you have to define. I inserted missing comma and changed 'health' values to booleans.

If we analyse source and expected output:

source = [ {"Env" :"dit", "id": 1, "appId": "AP11232", "health": True},
           {"Env" :"dit", "id": 2, "appId": "AP11232", "health": False},  
           {"Env" :"int", "id": 1, "appId": "AP11232", "health": True},
           {"Env" :"int", "id": 2, "appId": "AP11232", "health": True},
           {"Env" :"int", "id": 3, "appId": "AP11232", "health": True},
           {"Env" :"int", "id": 4, "appId": "AP11232", "health": True}
         ]

result =         {"dit": [{"id": 1, "appId": "AP11232", "health": True},
                          {"id": 2, "appId": "AP11232", "health": False}],
                  "int": [{"id": 1, "appId": "AP11232", "health": True},
                          {"id": 2, "appId": "AP11232", "health": True}, 
                          {"id": 3, "appId": "AP11232", "health": True},
                          {"id": 4, "appId": "AP11232", "health": True}]
We can define objective - "from every dictionary in source pop out key 'Env' and make its value key in a new dictionary with value type list and append remaining dictionary to this". Doing it this way we don't need to know what are the remaining keys in source dictionary, we just grab what we need and keep everything else as it is.

To avoid key errors in situations where keys don't exist one could use defaultdict from built-in collections module or dictionary method setdefault (I used setdefault as it doesn't require import):

d = {}
for row in source:
    d.setdefault(row.pop('Env'), []).append(row)
Output:
{'dit': [{'id': 1, 'appId': 'AP11232', 'health': True}, {'id': 2, 'appId': 'AP11232', 'health': False}], 'int': [{'id': 1, 'appId': 'AP11232', 'health': True}, {'id': 2, 'appId': 'AP11232', 'health': True}, {'id': 3, 'appId': 'AP11232', 'health': True}, {'id': 4, 'appId': 'AP11232', 'health': True}]}
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Quote

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  updating a dictionary evansmb 1 45 5 hours ago
Last Post: Larz60+
  How does this code know to use the key of a dictionary renveg 1 82 Feb-15-2020, 11:10 PM
Last Post: scidam
  create a list of object with a list of character studenthch 0 63 Feb-12-2020, 08:43 AM
Last Post: studenthch
  How to append to a dictionary? t4keheart 1 214 Feb-05-2020, 04:25 PM
Last Post: t4keheart
  Create a dynamic Menu from a editable Dictionary. KiNeMs 1 105 Jan-28-2020, 04:27 AM
Last Post: Larz60+
  Python script Server list - if condition error razor04 12 412 Jan-27-2020, 09:05 PM
Last Post: razor04
  Get a value from a dictionary through input Anony 3 204 Jan-26-2020, 06:18 PM
Last Post: buran
  Remove isolated vertices from dictionary and adjacency matrix Weird 1 100 Jan-18-2020, 04:33 PM
Last Post: Weird
  dictionary merge Skaperen 5 214 Jan-17-2020, 01:28 AM
Last Post: Skaperen
  Access list items in Python kamaleon 2 226 Dec-31-2019, 11:10 AM
Last Post: kamaleon

Forum Jump:


Users browsing this thread: 1 Guest(s)