如何计算含字符串格式薪资的字典中薪资平均值?
计算带千分位逗号的薪资字典平均值
核心问题是把带逗号的字符串薪资转成数值类型,再计算平均值,以下是具体实现:
方法1:用map函数处理
先写个转换函数,去掉字符串里的千分位逗号再转成整数,再用map批量处理所有薪资值:
salaries = { "Ben" : '82,500', "Bob" : '83,750', "Mike": '90,000', "Ann" : '89,000', "Sue" : '80,000' } def str_to_salary(s): return int(s.replace(',', '')) # 转换所有薪资为整数列表 salary_nums = list(map(str_to_salary, salaries.values())) # 计算平均值 average = sum(salary_nums) / len(salary_nums) print(average) # 输出 85050.0
方法2:用列表推导式(更简洁)
不想单独写转换函数的话,直接用列表推导式一步完成转换:
salaries = { "Ben" : '82,500', "Bob" : '83,750', "Mike": '90,000', "Ann" : '89,000', "Sue" : '80,000' } salary_nums = [int(salary.replace(',', '')) for salary in salaries.values()] average = sum(salary_nums) / len(salary_nums) print(average)
关于之前map失败的原因
直接用int()转换带逗号的字符串会触发ValueError,必须先通过replace(',', '')去掉千分位逗号,再做类型转换。把这个逻辑放进map的处理函数里,就能正常运行了。
内容的提问来源于stack exchange,提问作者papadum
相关产品推荐
相关产品推荐

