Python中从字典获取数据时忽略大小写的实现方法
实现忽略大小写查找字典键的方法
当然可以实现,给你两种实用的方案:
方案1:生成小写键映射字典
先把原字典的所有键转成小写,构建一个新的映射字典,之后直接用小写的目标键取值即可:
for row in dict_reader: # 将row的键统一转为小写,创建新字典 lowercase_row = {k.lower(): v for k, v in row.items()} # 用小写的键取值,兼容原键的任意大小写 part_number = lowercase_row['number'] part_name = lowercase_row['name'] part_number_list.append({f"{part_number}.mod": part_name})
如果担心目标键不存在会抛出KeyError,可以用get方法设置默认值:
part_number = lowercase_row.get('number', '默认编号') part_name = lowercase_row.get('name', '默认名称')
方案2:写一个大小写不敏感的取值函数
如果不想生成新字典,可以写一个通用函数,遍历原字典的键进行大小写匹配:
def get_case_insensitive_value(dictionary, target_key): target_key_lower = target_key.lower() for key, value in dictionary.items(): if key.lower() == target_key_lower: return value # 没找到时可以抛出异常或返回默认值 raise KeyError(f"未找到匹配 '{target_key}' 的键(忽略大小写)") # 使用示例 for row in dict_reader: part_number = get_case_insensitive_value(row, 'Number') part_name = get_case_insensitive_value(row, 'Name') part_number_list.append({f"{part_number}.mod": part_name})
注意事项
如果原字典中存在多个键转小写后完全相同的情况(比如同时有Number和number),以上两种方法都会返回第一个匹配到的值,需要确保你的数据源里没有这种重复键的问题。
内容的提问来源于stack exchange,提问作者nbe
相关产品推荐
相关产品推荐

