如何从现有字典创建仅包含数值类型键值对的新字典?
解决字典筛选数值类型键值对的问题
你的问题出在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
相关产品推荐
相关产品推荐

