首页 > 解决方案 > 根据字典赋值

问题描述

我有一个 list1 的名字:

   ["SAM","TOM","LOUIS"]

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

{"NICE": ["SAM", "MAIK", "CARL", "LAURA", "MARTH"],
 "BAD": ["LOUIS", "TOM", "KEVIN"],
 "GOOD": ["BILL", "JEN", "ALEX"]}

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

我期待生成以下输出:

["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,如何以有效的方式获得所需的输出?

标签: pythondictionary

解决方案


您可以创建一个中间字典,将名称映射到它们的键dict1

categories = {name: category for category, names in dict1.items() for name in names}

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

[categories[name] for name in list1]

返回:

['NICE', 'BAD', 'BAD']

推荐阅读