user3420561
user3420561

Reputation: 198

how to not add extra list bracket for a dictionary key where values are already in list

I am doing one operation on dictionary, where i want to add or append all values with same keys together, my values are list of dictionary.

{'test': [{'Workvalue': [{'for': 'red', 'pro': 'valpr'}, {'for': 'valtest2', 'pro': 'valpr2'}, {'for': 'testing purpose', 'pro': 'testing urpos'}]}, {'WorkLimit': [{'for': 'FLR1', 'pro': 'PLR1'}, {'for': 'FLR2', 'pro': 'PLR2'}]}, {'WorkLimit': [{'for': 'FLR3'}, {'for': 'DAV', 'pro': 'DDAA'}]}]}

I want following output:

{'test': [{'Workvalue': [{'for': 'valtest', 'pro': 'valpr'}, {'for': 'valtest2', 'pro': 'valpr2'}, {'for': 'testing purpose', 'pro': 'testing urpos'}], 'WorkLimit': [{'for': 'FLR1', 'pro': 'PLR1'}, {'for': 'FLR2', 'pro': 'PLR2'}], [{'for': 'FLR3'}, {'for': 'DAV', 'pro': 'DDAA'}]]}}

I am getting this result with my code:

{'test': [{'Workvalue': [[{'for': 'valtest', 'pro': 'valpr'}, {'for': 'valtest2', 'pro': 'valpr2'}, {'for': 'testing purpose', 'pro': 'testing urpos'}]], 'WorkLimit': [[{'for': 'FLR1', 'pro': 'PLR1'}, {'for': 'FLR2', 'pro': 'PLR2'}], [{'for': 'FLR3'}, {'for': 'DAV', 'pro': 'DDAA'}]]}]}

I am getting extra list bracket , but i dont want that.

code i am using trying:

value = {
        k: [d.get(k) for d in data['test'] if d.get(k) is not None]
        for k in set().union(*data['test])
        }

Upvotes: 2

Views: 679

Answers (1)

Happy Ahmad
Happy Ahmad

Reputation: 1087

The reason is that d.get(k) returns an array. However, you can simply use its elements instead of the whole array:

value = {
        k: [element for d in data['test'] if d.get(k) is not None for element in d.get(k)]
        for k in set().union(*data['test'])
        } 

Output:

{'WorkLimit': [{'for': 'FLR1', 'pro': 'PLR1'}, {'for': 'FLR2', 'pro': 'PLR2'}, {'for': 'FLR3'}, {'for': 'DAV', 'pro': 'DDAA'}], 'Workvalue': [{'for': 'red', 'pro': 'valpr'}, {'for': 'valtest2', 'pro': 'valpr2'}, {'for': 'testing purpose', 'pro': 'testing urpos'}]}

Upvotes: 1

Related Questions