You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按指定键列表筛选并排序字典键及SyntaxError语法错误修复

修复语法错误并实现指定键筛选+按值升序排序

问题分析

你写的代码里sorted那行的语法完全错误:

  • D.get()的参数应该是字典的键,不是lambda表达式,更不能嵌套生成器写法
  • 没有先从字典里筛选出result列表中指定的键,直接对整个字典的键排序不符合需求

修复方案

先筛选出result列表里存在于字典D中的键,再对这些按键对应的值升序排序。具体代码如下:

def main():
    D ={'acct_number':10202,'acct_name':'abc','v1_rev':200,'v2_rev':210,'v4_rev':2,'v5_rev':200,'v6_rev':210,'v7_rev':60000000,'v3_rev':2000}
    result = ['v1_rev', 'v5_rev', 'v2_rev', 'v6_rev']
    
    # 筛选出result中存在于字典D的键,避免键不存在报错
    filtered_keys = [key for key in result if key in D]
    # 按对应值升序排序,相同值保持原列表顺序(稳定排序)
    sorted_keys = sorted(filtered_keys, key=lambda k: D[k])
    
    print(sorted_keys)

if __name__ == '__main__':
   main()

代码说明

  1. 筛选指定键:用列表推导式精准筛选出你需要的键,同时加入if key in D的判断,避免因result里的键不在字典中引发报错。
  2. 按值排序:sorted的key参数通过lambda k: D[k]指定按照键对应的值排序,默认就是升序规则;如果多个键对应的值相同,会保持它们在原筛选列表中的顺序。

运行结果

执行后输出:

['v1_rev', 'v5_rev', 'v2_rev', 'v6_rev']

完全符合需求:仅包含指定列表的键,且按值从小到大排序(v1_rev、v5_rev值为200,v2_rev、v6_rev值为210)。

内容的提问来源于stack exchange,提问作者pbh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:13:26