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

如何从现有字典创建仅包含数值类型键值对的新字典?

解决字典筛选数值类型键值对的问题

你的问题出在isdigit()/isnumeric()是字符串专属方法,而字典里的数值是int类型,直接调用会报错——int对象根本没有这些方法。要筛选数值类型的键值对,应该直接判断值的类型,下面两种方法都可行:

方法1:使用isinstance()(推荐)

这种方法能同时匹配整数和浮点数,还能兼容数值类型的子类,灵活性更高:

simple_dict = {
  'a': 1, 
  'b': 2, 
  'c': 3, 
  'd': 'John',
  'e': 4,
  'f': 'Sandra'
}

new_dict = {key: value for key, value in simple_dict.items() if isinstance(value, (int, float))}

运行后new_dict的结果为:{'a': 1, 'b': 2, 'c': 3, 'e': 4}

方法2:使用type()判断

如果只需要严格匹配int和float基础类型,也可以直接用type():

new_dict = {key: value for key, value in simple_dict.items() if type(value) in (int, float)}

补充说明

  • 只有当值是字符串形式的数字(比如'5')时,才需要用到isdigit(),你的场景里值是真正的数值类型,完全不需要用字符串方法。
  • 如果需要包含复数等其他数值类型,只需把类型元组改成(int, float, complex)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:31:03