Python两列表合并为字典时过滤非目标类型元素问题求解
错误原因
你原有代码的问题出在循环范围取值错误:你给range()传的是list1中整数元素的长度,测试数据里list1只有2个整数,因此循环仅执行2次,最终只能生成2个键值对。
正确实现
可以直接分别过滤两个列表后用zip配对转字典,代码更简洁易读:
list1 = ["A","B","C","D","E" ,"F", 1 ,"G", 3 ,"H","I","J","K","L"] list2 = [20 ,27 , "Arm","Leg", 13 , 24 ,"Head", 75 , 64 , 71 ,"Ankle", 82 , 45 , 23] # 过滤list1仅保留字符串作为键 keys = [item for item in list1 if isinstance(item, str)] # 过滤list2仅保留整数作为值 values = [item for item in list2 if isinstance(item, int)] # 按位置配对生成字典 result = dict(zip(keys, values)) print(result)
运行输出结果符合一一对应的配对要求,如果两个过滤后列表长度不一致,zip会自动按较短的列表长度截断:
{'A': 20, 'B': 27, 'C': 13, 'D': 24, 'E': 75, 'F': 71, 'G': 82, 'H': 45, 'I': 23}
内容的提问来源于stack exchange,提问作者Fadi
相关产品推荐
相关产品推荐

