gpt4 book ai didi

python - 用于将带有 M 和 K 的数字转换为新列表中的 int 的字典

转载 作者:行者123 更新时间:2023-12-05 05:42:57 25 4
gpt4 key购买 nike

感谢您投稿。

我对如何传递包含带 K 和 M 的字符串的列表成员感到困惑。

我需要将那些带有 K 和 M 的字符串转换为整数,而那些带有纯字符串的则保持原样。

例如我有一个列表:

sales = ['No data', '300K', '5M', '3B']

进入

updated_sales = ['No data', 300000, 5000000, 3000000000]

我试过这段代码:

import decimal
from decimal import Decimal

suffix = {"M": 1000000,
"B": 1000000000,
"K": 1000
}
def updsales(saleslist):
updated_sales=[]
for sale in saleslist:
if sale[-1] in suffix:
sales_value,magnitude = sale[:-1], sale[-1]
return updated_sales.append(Decimal(sales_value) * 10 ** suffix[magnitude])
else:
return updated_sales.append('No Data')

sales = ['No data', '300K', '5M', '3B']
updsales(sales)

我该如何解决这个问题?

最佳答案

代码中的修改:

def updsales(saleslist):
updated_sales=[]
for sale in saleslist:
if sale[-1] in suffix:
sales_value,magnitude = sale[:-1], sale[-1]
updated_sales.append(int(sales_value) * suffix[magnitude])
else:
updated_sales.append('No Data')
return updated_sales

updsales(['No data', '300K', '5M', '3B'])

输出:

['No Data', 300000, 5000000, 3000000000]

你做错了什么?

  1. 返回附加列表而不是整个列表
  2. 使用 10 **,即使您已将所需的零存储在 suffix 中。

不过,如果你有兴趣的话。这是一个更简单的实现:

suffix = {'B' : 'e9', 'M': 'e6', 'K': 'e3'}
def updsales(saleslist):
updated_sales = []
for i, val in enumerate(saleslist):
if val[-1] in suffix:
updated_sales.append(float(val[:-1] + suffix[val[-1]]))
else:
updated_sales.append(val)
return updated_sales

updsales(['No data', '300K', '5M', '3B'])

输出:

['No data', 300000.0, 5000000.0, 3000000000.0]

关于python - 用于将带有 M 和 K 的数字转换为新列表中的 int 的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71919369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com