假设我需要这样做:我需要将列表'check_keys‘中的值与字典'parm’中的键值相匹配,并将匹配的键按相同的顺序存储到一个新的列表'insert‘中。
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']发布于 2018-10-07 19:52:39
花了些时间但我想我知道你想做什么了。
如果我是对的,你就不要倒过来查字典,从一个值到一个键。最简单的方法是对反向字典进行验证。
rparm = dict( (value,key) for key,value in parm.items())然后对数据进行匹配。
insert = [rparm[key] for key in check_keys]很抱歉使用了所有这些列表和生成器理解。如果我们不熟悉它们,我可以添加经典的for循环版本。
发布于 2018-10-07 19:58:03
一种可能的方法是反向字典,这可以在线性时间(相对于您的parm的大小)平均。
一旦字典被反转,搜索的值就变成键,现在很容易访问check_keys列表中的每个键O(1)。
rev_parm = dict((v, k) for k, v in parm.items())
insert = [rev_parm[k] for k in check_keys]发布于 2018-10-07 19:43:47
也许是这样的?
insert = []
for k, v in parm.items():
if k in check_keys:
insert.append(k)或者这个更短的版本:
insert = [k for k, v in parm.items() if k in check_keys]https://stackoverflow.com/questions/52691905
复制相似问题