首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将值与键值匹配并获取键

将值与键值匹配并获取键
EN

Stack Overflow用户
提问于 2018-10-07 19:05:13
回答 5查看 1.5K关注 0票数 0

假设我需要这样做:我需要将列表'check_keys‘中的值与字典'parm’中的键值相匹配,并将匹配的键按相同的顺序存储到一个新的列表'insert‘中。

代码语言:javascript
运行
复制
parm = {'f': 'w', 'l': 'b', 'b': 'y', 'u': 'o', 't': 'r', 'r': 'g'}
check_keys = ['r','b','o','g','w','y']
insert = ['t','l','u','r','f','b']
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-10-07 19:52:39

花了些时间但我想我知道你想做什么了。

如果我是对的,你就不要倒过来查字典,从一个值到一个键。最简单的方法是对反向字典进行验证。

代码语言:javascript
运行
复制
rparm = dict( (value,key) for key,value in parm.items())

然后对数据进行匹配。

代码语言:javascript
运行
复制
insert = [rparm[key] for key in check_keys]

很抱歉使用了所有这些列表和生成器理解。如果我们不熟悉它们,我可以添加经典的for循环版本。

票数 0
EN

Stack Overflow用户

发布于 2018-10-07 19:58:03

一种可能的方法是反向字典,这可以在线性时间(相对于您的parm的大小)平均。

一旦字典被反转,搜索的值就变成键,现在很容易访问check_keys列表中的每个键O(1)。

代码语言:javascript
运行
复制
rev_parm = dict((v, k) for k, v in parm.items())
insert = [rev_parm[k] for k in check_keys]
票数 1
EN

Stack Overflow用户

发布于 2018-10-07 19:43:47

也许是这样的?

代码语言:javascript
运行
复制
insert = []
for k, v in parm.items():
    if k in check_keys:
        insert.append(k)

或者这个更短的版本:

代码语言:javascript
运行
复制
insert = [k for k, v in parm.items() if k in check_keys]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52691905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档