Python 我如何制作每一个“;“用户”;字典里有一把钥匙和所有的;“团体”;它们属于它';s值多少?
我想要一个结果,使打印语句打印Python 我如何制作每一个“;“用户”;字典里有一把钥匙和所有的;“团体”;它们属于它';s值多少?,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我想要一个结果,使打印语句打印 {"admin" : ["local", "public", "administrator"], "user A" : ["local"], "user B" : ["public"]} 这就是我尝试过的: def groups_per_user(groups_dictionary): use
{"admin" : ["local", "public", "administrator"],
"user A" : ["local"],
"user B" : ["public"]}
这就是我尝试过的:
def groups_per_user(groups_dictionary):
user_groups = {}
for groups, users in groups_dictionary.items():
for user in users:
user_groups[user] = groups
return(user_groups)
print(groups_per_user({"local":["admin", "user A"], "public":["admin", "user B"], "administrator": ["admin"]}))
输出
{'admin': 'administrator', 'user A': 'local', 'user B': 'public'}
只需修改
for
循环,如下所示:
for user in users:
user_groups.setdefault(user, [])
user_groups[user].append(groups)
这是一个不需要任何模块帮助的解决方案,但不简单但灵活,您可以在任何情况下使用它,无论您的数据有多大,代码仍然可以工作,并为您提供所需的输出 解决方案 输出 因此,让我简要介绍一下我的代码,首先确定数据中的
键(data\u keys
)和值(data\u keys
),然后找到所有值的交集(intersect
),以便动态获取admin
),然后搜索索引(index
)为了在键
中删除它,每个值中都有一个admin,因此当您删除它们时,会有一个空的键列表并将其删除,然后为管理员
(为_admin
)创建字典,并为用户创建另一个字典(为_用户
)毕竟,将它们连接起来以得到最终的解决方案
而且,如果你有以下疯狂的输入,你会得到想要的输出
输入
输出
data = {"local":["admin", "user A"],
"public":["admin", "user B"],
"administrator": ["admin"]}
def groups_per_user(data):
data_keys = [key for key in data.keys()]
data_values = [value for value in data.values()]
for inter in range(len(data)):
intersect = set(data_values[inter]).intersection(set(data_values[inter]))
indexes = [i.index(''.join(i for i in intersect)) for i in data_values]
for i, v in enumerate(data_values):
data_values[i].remove(v[indexes[i]])
non_empty_list = [e for i in data_values if len(i) != 0 for e in i]
for_admin = {''.join(i for i in intersect): data_keys}
for_users = {}
for users_keys, users in data.items():
for i in range(len(non_empty_list)):
if non_empty_list[i] in users:
for_users[''.join(user for user in users)] = users_keys
res = {}
for a, b in for_users.items():
for c, d in for_admin.items():
res[c] = d
res[a] = [b]
return res
print(groups_per_user(data))
{'admin': ['local', 'public', 'administrator'],
'user A': ['local'],
'user B': ['public']}
data = {"local":["admin", "user A"],
"current":["admin", "user C"],
"public":["admin", "user B"],
"private":["admin", "user B"],
"administrator": ["admin"]}
{'admin': ['local', 'current', 'public', 'private', 'administrator'],
'user A': ['local'],
'user C': ['public'],
'user B': ['private']}