在python中将新值作为字典值添加到列表中

组织架构

我现在正在做 python 的课程,我有一个练习,我根本没有得到答案。我希望你能帮我解决这个简单的问题。

问题是:用户可以属于多个组。填空以返回 a dictionary,以用户为键,以用户组列表为值。

我试图做这个练习,但计算机没有将我的答案识别为有效。我认为这是因为brackets.

这是我的代码:-

def groups_per_user(group_dictionary):
   user_groups = {}
    for group, user in group_dictionary.items():
    
        for user in user:
            if user not in user_groups:
                user_groups[user] = group
            else:
                
                x = user_groups[user]
                new_group={}
                new_group = {user: [x,group]}
                
                user_groups.update(new_group)
                
    return(user_groups)
print(groups_per_user({"local": ["admin", "userA"],
        "public":  ["admin", "userB"],
        "administrator": ["admin"] }))

我得到

{'admin': [['local', 'public'], 'administrator'], 'userA': 'local', 'userB': 'public'}

我也尝试使用此代码避免使用括号


> new_group = {user: [x,group]}
> 
> new_group = {user: [str(x).lstrip('[').rstrip(']'),group]}

这次我得到:

{'admin': ["'local', 'public'", 'administrator'], 'userA': 'local', 'userB': 'public'}

两次都无效。

有更好的方法吗?

预先感谢大家的帮助

雷达

首先

for user in user:

将覆盖迭代变量。不要这样做。

第二:

user_groups[user] = group

这会将用户映射到组。相反,您可以直接在此处创建组列表

user_groups[user] = [group] # single element list

最后:

x = user_groups[user]
new_group={}
new_group = {user: [x,group]}
user_groups.update(new_group)

这些都不是必需的。您可以简单地将新组附加到现有用户列表中:

user_groups[user].append(group)

这给了我们:

def groups_per_user(group_dictionary):
    user_groups = {}
    for group, users in group_dictionary.items():

        for user in users:
            if user not in user_groups:
                user_groups[user] = [group]
            else:
                user_groups[user].append(group)
    return user_groups


print(groups_per_user({"local": ["admin", "userA"],
                       "public": ["admin", "userB"],
                       "administrator": ["admin"]}))

输出:

{'admin': ['local', 'public', 'administrator'], 'userA': ['local'], 'userB': ['public']}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Python中将值添加到列表的字典吗?

Python将新的键/值添加到键匹配值的字典列表中

将列表中的值添加到python中的字典

从 Python 中的列表将值添加到字典中

Python将项添加到作为字典的字典值

将其他值作为列表添加到字典值中

根据值对python中的字典列表进行排序,并将排序后的对象添加到新列表中

NetworkX:将列表作为值从字典中的边添加到图形中

如何在Python中将列表值添加到现有字典

从两个大小相同的单独列表中将键和值添加到字典中

如何使用函数将新的键和值添加到列表的字典中

如何将值列表和新键添加到嵌套字典中?

如果列表是字典中的值,则添加到 python 中的列表

将字典的值添加到列表中

如何将列表添加到字典的值中?

使用 append 添加到字典内列表中的值

同时在Python中将键和+ 1值添加到字典中

将一行的所有值作为列表添加到新列中

在 Python 中,您可以将列表中的元素添加到字典的值中吗?

将具有相同键的字典添加到列表中,而不会覆盖Python中的值

将存储在变量中的字典值添加到列表 python3

如何在字典Python中添加列表作为值

如何通过使用列表的索引作为键和列表的项作为值来将列表添加到字典中?

将字典中的列表添加到DataFrame作为新列

将值列表添加到字典列表

在Pyspark中,如何将值列表作为新列添加到现有数据框?

如何将值添加到存储为字典值的列表中?

将项目添加到字典列表中具有相同值的字典

在c#中将键值对列表添加到字典中