根据字典分配值

ge0*_*rge 3 python dictionary

我有一个带有名称的list1:

   ["SAM","TOM","LOUIS"]
Run Code Online (Sandbox Code Playgroud)

我有一个这样的dict1(在值列表中没有重复的名称:

{"NICE": ["SAM", "MAIK", "CARL", "LAURA", "MARTH"],
 "BAD": ["LOUIS", "TOM", "KEVIN"],
 "GOOD": ["BILL", "JEN", "ALEX"]}
Run Code Online (Sandbox Code Playgroud)

我如何遍历list1,以便如果任何名称出现在dict1的任何列表中,它都会分配dict的对应键?

我期待产生以下输出:

["NICE","BAD","BAD"]
Run Code Online (Sandbox Code Playgroud)

对应于列表中显示的值的键:SAM,TOM,LOUIS。

这是我的想法:

lista=[]
for k,v in dict1:
    for values in arr1:
        if values in v:
            lista.append(v)
lista
Run Code Online (Sandbox Code Playgroud)

但是不确定如何迭代不同的对象v,如何有效地获取所需的输出?

blh*_*ing 5

您可以在以下位置创建一个中间字典,将名称映射到其键dict1

categories = {name: category for category, names in dict1.items() for name in names}
Run Code Online (Sandbox Code Playgroud)

这样您就可以使用以下命令将名称list1有效地映射到它们各自的键中:

[categories[name] for name in list1]
Run Code Online (Sandbox Code Playgroud)

返回:

['NICE', 'BAD', 'BAD']
Run Code Online (Sandbox Code Playgroud)