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

Python中使用filter函数筛选字典未获预期键值对结果的问题

问题分析与解决

你的代码存在两个核心问题:

  1. 出现<filter at 0x230f41616a0>是因为未打印转换后的列表变量——你已经用list()将filter对象转为列表,但如果没执行print(list1),或是误直接打印filter对象,就会显示这个内存地址。
  2. 即便打印list1,也只能得到[['Cornor',19], ['Trump',20]],因为你调用了students_data.values(),只提取了字典的值,丢失了键信息,无法得到带键的目标格式。

修正代码

要保留键并筛选符合条件的项,需处理字典的items()(返回键值对元组),再通过filter筛选后转成字典或格式化输出:

students_data = {1:['Sam', 15] , 2:['Rob',18], 3:['Kyle', 16], 4:['Cornor',19], 5:['Trump',20]}

# 筛选年龄>18的键值对,转成字典
filtered_dict = dict(filter(lambda item: item[1][1] > 18, students_data.items()))

# 输出字典格式
print(filtered_dict)
# 结果:{4: ['Cornor', 19], 5: ['Trump', 20]}

# 转成你期望的字符串格式
result_str = ", ".join([f"{k}:{v}" for k, v in filtered_dict.items()])
print(result_str)
# 结果:4:['Cornor', 19], 5:['Trump', 20]

关键说明

  • students_data.items()返回每个元素为(键, 值列表)的元组,item[1][1]对应学生的年龄。
  • dict()可将filter返回的符合条件的键值对元组直接转为字典。
  • 用join结合列表推导式,能快速将字典格式转换为你需要的字符串输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:10:29