我有一个带有名称的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,如何有效地获取所需的输出?
您可以在以下位置创建一个中间字典,将名称映射到其键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)