使用多种解决方案后列表元素替换不起作用

List element replacement is not working after using multiple solutions

我有一个列表,其中大多数元素是字符串形式的数字和一些从数据集中获得的普通字符串。

这是前 50 项:

['-', '-', '-', '-', '-', '404000000', '110000000', '4926000', '15000000', '-', '-', '-', '-', '-', '14900000', '66100000', '15000000', '13000000', '20000000', '-', '20000000', '30000000', '-', '-', '-', '-', '278000000', '-', '17000000', '275000000', '121000000', '-', '12000000', '-', '29000000', '-', '267000000', '500000000', '50000000', '-', '356000000', '-', '-', '-', '20000000', '-', '-', '-', '-', '-']

我想用数字 0 替换那些 '-' 和 'undisclosed'。我在 this answer 上关注了一个 Whosebug 问题,但该教程没有用,我什至尝试过这个但仍然没有'没用。

for p in price:
  if p != '-' and p != 'undisclosed':
    p = int(p)
  else:
    p = 0

正如评论所说,您实际上并没有更改列表中的值。您可以尝试枚举:


price = ['-', '-', '-', '-', '-', '404000000', '110000000', '4926000', '15000000', '-', '-', '-', '-', '-', '14900000', '66100000', '15000000', '13000000', '20000000', '-', '20000000', '30000000', '-', '-', '-', '-', '278000000', '-', '17000000', '275000000', '121000000', '-', '12000000', '-', '29000000', '-', '267000000', '500000000', '50000000', '-', '356000000', '-', '-', '-', '20000000', '-', '-', '-', '-', '-']

for n,p in enumerate(price):
    if p != '-' and p != 'undisclosed':
        price[n] = int(p)
    else:
        price[n] = 0