Python如何从字典中提取与指定值列表匹配的所有键
错误原因
你给出的写法是把myvals里的元素当成字典的键去取对应值,而字典默认是按键索引存储的,你的需求是根据值反向匹配对应的键,刚好搞反了键值的查询方向,所以无法得到正确结果。
正确实现方式
基础写法(适配小规模数据)
直接通过列表推导式遍历字典的键值对,匹配值属于myvals的键即可:
dictionary = {"raj": 2, "striver": 3, "vikram": 4} myvals = [2,4] result = [k for k, val in dictionary.items() if val in myvals]
执行后result的输出就是['raj', 'vikram'],符合需求。
优化写法(适配大规模数据)
如果myvals的元素数量较多,可以先把它转成集合,把值匹配的查询时间复杂度从O(n)降到O(1),提升执行效率:
dictionary = {"raj": 2, "striver": 3, "vikram": 4} myvals = [2,4] myvals_set = set(myvals) result = [k for k, val in dictionary.items() if val in myvals_set]
内容的提问来源于stack exchange,提问作者user3625533
相关产品推荐
相关产品推荐

