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

如何不使用map函数实现列表转字典?附map语句解析

嵌套列表转字典:基础实现与map语句解析

不用map的基础替代实现

如果对map函数不熟悉,可以用嵌套循环手动完成类型转换和字典构建,逻辑更直观:

jumps = [
    ['Student', 'Jump 1', 'Jump 2', 'Jump 3'],
    ['James', '10', '9', '8'],
    ['Finn', '18', '19', '21'],
    ['Blu', '14', '15', '17'],
    ['John', '15', '16', '16'],
    ['Kim', '13', '19', '13'],
    ['Lacey', '19', '17', '10']]

def jump_distance(jumps):
    result_dict = {}
    # 跳过表头行,遍历每个运动员的数据行
    for row in jumps[1:]:
        athlete_name = row[0]
        int_jumps = []
        # 逐个转换跳跃长度字符串为整数
        for jump_str in row[1:]:
            int_jumps.append(int(jump_str))
        # 将姓名和对应的整数列表存入字典
        result_dict[athlete_name] = int_jumps
    return result_dict

原语句dict[d[0]] = list(map(int, d[1:]))的工作原理

这条语句可以拆分为5个核心步骤,逐个解析:

  1. d[0]:循环变量d代表每次取出的运动员数据行(例如['James', '10', '9', '8']),d[0]提取该行第一个元素,也就是运动员姓名,作为字典的键。
  2. d[1:]:截取当前行中从第二个元素到末尾的所有内容,得到包含跳跃长度字符串的子列表(例如['10', '9', '8'])。
  3. map(int, d[1:]):map函数会把int函数依次作用到d[1:]的每个字符串元素上,生成一个迭代器,迭代器中的每个元素都是转换后的整数(例如包含10、9、8的迭代器)。
  4. list(map(...)):将map生成的迭代器转换为列表,最终得到整数类型的跳跃长度列表(例如[10, 9, 8])。
  5. dict[d[0]] = ...:将运动员姓名作为键,对应的整数列表作为值,添加或更新到字典中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:05:16