谢谢你的来信.

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

我需要将带有K和M的字符串转换成整数,而带有纯字符串的字符串保持原样.

例如,我有一个列表:

销售额=[‘无数据’、‘30万’、‘500万’、‘3B’]

进入

更新的_销售额=['无数据',300000000030000000000]

我试过以下代码:

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')

销售额=[‘无数据’、‘30万’、‘500万’、‘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相关问答推荐

只需使用Python在图像中保留 colored颜色 范围区域

解析讨论论坛只给我第一个用户 comments ,但没有给我其他用户回复

Django序列化器没有验证或保存数据

从Python调用GMP C函数时的分段错误和内存泄漏

如何编写一个正规表达式来查找序列中具有2个或更多相同辅音的所有单词

如果我已经使用了time,如何要求Python在12秒后执行另一个操作.sleep

为什么dict(id=1,**{id:2})有时会引发KeyMessage:id而不是TypMessage?

如何将桌子刮成带有Se的筷子/要求/Beautiful Soup ?

Google Drive API获取文件计量数据

线性模型PanelOLS和statmodels OLS之间的区别

根据不同列的值在收件箱中移动数据

输出中带有南的亚麻神经网络

将图像拖到另一个图像

聚合具有重复元素的Python字典列表,并添加具有重复元素数量的新键

C#使用程序从Python中执行Exec文件

数据抓取失败:寻求帮助

递归访问嵌套字典中的元素值

Geopandas未返回正确的缓冲区(单位:米)

Python—压缩叶 map html作为邮箱附件并通过sendgrid发送

替换现有列名中的字符,而不创建新列