python - 根据字典赋值
问题描述
我有一个 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
,如何以有效的方式获得所需的输出?
解决方案
您可以创建一个中间字典,将名称映射到它们的键dict1
:
categories = {name: category for category, names in dict1.items() for name in names}
这样您就可以list1
使用以下方法有效地将名称映射到它们各自的键:
[categories[name] for name in list1]
返回:
['NICE', 'BAD', 'BAD']
推荐阅读
- javascript - Laravel:未捕获(承诺)错误:请求失败,状态码为 422
- kubernetes - 503 服务暂时不可用 Nginx + Kibana + AKS
- linux - 在 GCP VM /var/log 中占用更多空间。如何减少它?
- javascript - 从缓动函数中找到三次贝塞尔曲线
- android - 传入一个字符串以用作 Room 查询的一部分
- ruby-on-rails - 如何在 Rails <= 4 中加密环境变量
- python - 使用 xPath 表达式的 CSV 文件中的错误输出
- reactjs - 如何使用反应钩子重新获取 API
- c# - 如何制作 linq lambda 表达式
- java - Java 8 分组并在列表中求和
- > 对象