python - 根据字典赋值

标签 python dictionary

我有一个 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/

相关文章:

Cloud DataFlow 中的 Python 依赖项,requirements.txt 在本地工作,但在工作线程上不起作用

.net - 不断从具有后台线程的串行端口读取

python - 用于 Python 的类似 Xpath 的包,用于在列表和字典中查找所有级别的键

dictionary - Cassandra 映射 where 子句中的数据类型

python - 在保留相同键的同时获取字典中列表的乘积

python - 使用 Pandas 将一列字典拆分/分解为单独的列

python - Django1.1模型字段值返回前预处理

python - 在python中以可变格式打印多项式

javascript - 如何使用javascript映射将一个数组转换为另一个数组?

python 3嵌套理解