如何不使用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个核心步骤,逐个解析:
d[0]:循环变量d代表每次取出的运动员数据行(例如['James', '10', '9', '8']),d[0]提取该行第一个元素,也就是运动员姓名,作为字典的键。d[1:]:截取当前行中从第二个元素到末尾的所有内容,得到包含跳跃长度字符串的子列表(例如['10', '9', '8'])。map(int, d[1:]):map函数会把int函数依次作用到d[1:]的每个字符串元素上,生成一个迭代器,迭代器中的每个元素都是转换后的整数(例如包含10、9、8的迭代器)。list(map(...)):将map生成的迭代器转换为列表,最终得到整数类型的跳跃长度列表(例如[10, 9, 8])。dict[d[0]] = ...:将运动员姓名作为键,对应的整数列表作为值,添加或更新到字典中。
内容的提问来源于stack exchange,提问作者Emily Bingham
相关产品推荐
相关产品推荐

