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

如何将列表按数据类型拆分并生成对应字典?

按数据类型分组列表元素生成字典

先看示例:
输入列表:

input_list = [False, 333, 234.234, 'ert5rr']

目标输出字典:

{
    'bool': [False],
    'str': ['ert5rr'],
    'float': [234.234],
    'int': [333],
}

下面是两种实用的实现方式:

方法一:基础循环手动实现

这种方式逻辑清晰,适合新手理解,也方便按需扩展类型判断:

input_list = [False, 333, 234.234, 'ert5rr']
result = {}

for item in input_list:
    # 重点:先判断布尔类型,因为bool是int的子类,不优先判断会被归为int
    if isinstance(item, bool):
        key = 'bool'
    elif isinstance(item, int):
        key = 'int'
    elif isinstance(item, float):
        key = 'float'
    elif isinstance(item, str):
        key = 'str'
    # 可以在这里添加更多类型的判断,比如list、dict、tuple等
    else:
        # 其他未知类型直接取类型名称作为键
        key = type(item).__name__
    
    # 初始化键对应的列表,再添加元素
    if key not in result:
        result[key] = []
    result[key].append(item)

print(result)

方法二:用collections.defaultdict简化代码

如果不想手动处理列表初始化,可以用defaultdict来简化,代码更简洁:

from collections import defaultdict

input_list = [False, 333, 234.234, 'ert5rr']
result = defaultdict(list)

for item in input_list:
    if isinstance(item, bool):
        key = 'bool'
    else:
        # 除了bool,其他类型直接取类型名
        key = type(item).__name__
    
    result[key].append(item)

# 可选:把defaultdict转为普通字典
result = dict(result)
print(result)

关键注意事项

  • 布尔类型bool是int的子类,isinstance(False, int)会返回True,所以必须先判断bool类型,否则False会被错误分到'int'组里。
  • 如果需要支持更多数据类型,要么在判断分支里添加对应逻辑,要么直接用type(item).__name__自动适配所有类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:57:24