我有一个 list1 的名字:
["SAM","TOM","LOUIS"]
我有一个像这样的 dict1(在值列表中没有重复的名称:
{"NICE": ["SAM", "MAIK", "CARL", "LAURA", "MARTH"],
"BAD": ["LOUIS", "TOM", "KEVIN"],
"GOOD": ["BILL", "JEN", "ALEX"]}
我如何遍历 list1,以便如果任何名称出现在 dict1 的任何列表中,它就会分配字典的相应键?
我期待生成以下输出:
["NICE","BAD","BAD"]
这将对应于列表中出现的值的键:SAM、TOM、LOUIS。
我是这样想的:
lista=[]
for k,v in dict1:
for values in arr1:
if values in v:
lista.append(v)
lista
但是不确定如何迭代不同的 v
,我怎样才能以有效的方式获得所需的输出?
最佳答案
您可以创建一个中间字典,将名称映射到它们在 dict1
中的键:
categories = {name: category for category, names in dict1.items() for name in names}
这样您就可以有效地将 list1
中的名称映射到它们各自的键:
[categories[name] for name in list1]
返回:
['NICE', 'BAD', 'BAD']
关于python - 根据字典赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57402765/