Reputation: 355
How can I insert a list inside of a list that is in a dictionary?
[
{
"branches": [],
"email": "[email protected]",
"report_to": "1",
"role": "2",
"user_id": 2,
"user_name": "NorokUser1"
},
{
"branch_id": 1,
"branch_name": "NorokBranch2"
}
]
and my required condition is like this :
[
{
"branches": [ {
"branch_id": 1,
"branch_name": "NorokBranch2"
}],
"email": "[email protected]",
"report_to": "1",
"role": "2",
"user_id": 2,
"user_name": "NorokUser1"
}
]
This is the code :
for i in res:
# print(i)
update_users = {"user_id":i,'user_name': res[i][0][0],'role' : res[i][0][1],
"report_to":res[i][0][2],"email":res[i][0][3] ,"branches" : []}
data.append(update_users)
print(type(data))
for j in res[i]:
print(j)
update_branches = {"branch_id":j[4],"branch_name":j[5]}
ses.append(update_branches)
# print(type(ses))
data.append(update_branches)
This is the sample data :
{2: [('NorokUser1', '2', '1', '[email protected]', 1,
'NorokBranch2')], 3: [('NorokUser2', '2', '1', '[email protected]',
1, 'NorokBranch2'), ('NorokUser2', '2', '1', '[email protected]',
2, 'NorokBranch3')], 4: [('NorokUser3', '2', '1',
'[email protected]', 3, 'NorokBranch4')], 5: [('NorokUser4', '2',
'1', '[email protected]', 1, 'NorokBranch2'), ('NorokUser4', '2',
'1', '[email protected]', 2, 'NorokBranch3'), ('NorokUser4', '2',
'1', '[email protected]', 3, 'NorokBranch4'), ('NorokUser4', '2',
'1', '[email protected]', 4, 'NorokBranch5')]}
Upvotes: 2
Views: 75
Reputation: 355
Finally got the solution ! My list was getting out of index. so here is the solution.
Code:
for i in res:
# print(i)
update_users = {"user_id":i,'user_name': res[i][0][0],'role' : res[i][0][1],
"report_to":res[i][0][2],"email":res[i][0][3] ,"branches" : []}
data.append(update_users)
# print(type(data))
for j in res[i]:
print(j)
update_branches = {"branch_id":j[4],"branch_name":j[5]}
ses.append(update_branches)
print(type(ses))
print(data[count]['branches'].append(update_branches))
count +=1
Output :
[
{
"branches": [
{
"branch_id": 1,
"branch_name": "NorokBranch2"
}
],
"email": "[email protected]",
"report_to": "1",
"role": "2",
"user_id": 2,
"user_name": "NorokUser1"
},
{
"branches": [
{
"branch_id": 1,
"branch_name": "NorokBranch2"
},
{
"branch_id": 2,
"branch_name": "NorokBranch3"
}
],
"email": "[email protected]",
"report_to": "1",
"role": "2",
"user_id": 3,
"user_name": "NorokUser2"
},
{
"branches": [
{
"branch_id": 3,
"branch_name": "NorokBranch4"
}
],
"email": "[email protected]",
"report_to": "1",
"role": "2",
"user_id": 4,
"user_name": "NorokUser3"
},
{
"branches": [
{
"branch_id": 1,
"branch_name": "NorokBranch2"
},
{
"branch_id": 2,
"branch_name": "NorokBranch3"
},
{
"branch_id": 3,
"branch_name": "NorokBranch4"
},
{
"branch_id": 4,
"branch_name": "NorokBranch5"
}
],
"email": "[email protected]",
"report_to": "1",
"role": "2",
"user_id": 5,
"user_name": "NorokUser4"
}
]
Upvotes: 0
Reputation: 9197
To manipulate a list inside a dictionary which is inside a list you do it in the same way you would if it was a simple dictionary: dictionary["key"] = value
the value can also be a list. Since the dictionary is in a list, you first reference to the correct dictionary inside the list, which you can do like this: dictionary[0]
if it is on position 0 in the list and then set the value like this: dictionary[0]["key"] = value
Sample code:
lst = [
{
"branches": [],
"email": "[email protected]",
"report_to": "1",
"role": "2",
"user_id": 2,
"user_name": "NorokUser1"
},
{
"branch_id": 1,
"branch_name": "NorokBranch2"
}
]
next(iter(lst))['branches'] = [ {
"branch_id": 1,
"branch_name": "NorokBranch2"
}]
print(lst)
or use [0] if you are uncomfortable with next(iter()):
lst[0]['branches'] = [ {
"branch_id": 1,
"branch_name": "NorokBranch2"
}]
if the dictionary is not always on index 0 you can search for it like this:
next(item for item in dictionary if item["user_name"] == "NorokUser1")
or for multiple criteria:
next(item for item in dictionary if (item["user_name"] == "NorokUser1") & (item["user_id"] == 2))
Upvotes: 1