如何将列表的每个元素通过字典映射,返回对应的输出列表?
实现方案
你需要的是将列表中的每个元素作为键,取出字典中对应的值生成新列表,最简洁易读的实现方式是使用Python列表推导式:
my_dict = {'a': 1, 'b': 2, 'c': 3} my_list = ['b', 'a', 'b', 'c', 'c'] # 直接用列表推导式完成映射 my_list_output = [my_dict[item] for item in my_list] print(my_list_output) # 输出:[2, 1, 2, 3, 3]
如果需要兼容列表中存在字典不存在的键的场景,可以用字典的get方法避免抛出KeyError,还可以自定义默认返回值:
# 键不存在时默认返回None,也可以传入第二个参数指定默认值,比如my_dict.get(item, 0) my_list_output = [my_dict.get(item) for item in my_list]
如果要封装为示例中的some_func函数,写法如下:
def some_func(input_list, map_dict): return [map_dict[item] for item in input_list]
这种列表推导式的写法是Python处理这类序列映射场景的标准写法,语法直观可读性高,相比map+lambda的组合更符合Python的可读性设计原则。
内容的提问来源于stack exchange,提问作者Fin H
相关产品推荐
相关产品推荐

