relegate frozenset values to each set values

42 Views Asked by At

I'm a beginner in python, from the code below I found on twitter

how would you relegate the frozenset values to each of the set value to get the desired output? shoud the output not be a frozenset?

    admin_permissions = frozenset(['view', 'edit', 'delete', 'add'])
    editor_permissions = frozenset(['view', 'edit', 'add','deny'])
    viewer_permissions = frozenset(['view'])
    
    admins = {'Alice', 'Bob'}
    editors = {'Bob', 'Charlie', 'Dave'}
    viewers = {'Eve', 'Frank', 'Alice'}
    
    user_permissions = {}
    for user in admins:
        user_permissions[user] = admin_permissions
    for user in editors:
        user_permissions.setdefault(user, frozenset()).union(editor_permissions)
    for user in viewers:
        user_permissions.setdefault(user, frozenset()).union(viewer_permissions)
    
    print(user_permissions)

output is

{'Bob': frozenset({'edit', 'add', 'delete', 'view'}),
 'Alice': frozenset({'edit', 'add', 'delete', 'view'}),
 'Dave': frozenset(), 
 'Charlie': frozenset(), 
 'Frank': frozenset(), 
 'Eve': frozenset()
}

desired output

{'Bob': frozenset({'edit', 'add', 'delete', 'view', 'deny'}),
 'Alice': frozenset({'edit', 'add', 'delete', 'view'}),
 'Dave': frozenset({'edit', 'add', 'view', 'deny'}), 
 'Charlie': frozenset({'edit', 'add', 'view', 'deny'}), 
 'Frank': frozenset({'view'}), 
 'Eve': frozenset({'view'})
}
0

There are 0 best solutions below