如何从列表中筛选出特定的非常量浮点值



我是python的新手,我一直在尝试编写一个程序来跟踪我的蒸汽库存的总价值。我已经能够检索到我所有的皮肤和价格,但问题是将价格输出与steam_community_market.market模块输出隔离开来,后者是一个包含大量不必要信息的列表。我一直找不到如何从列表中只筛选特定的字符串。我试图过滤的列表格式的一个例子是:

skins_prices = [
{'Mann Co. Supply Crate Key': {
'success': True, 
'lowest_price': '$2.50', 
'volume': '6,489', 
'median_price': '$2.45'},
'AK-47 | Redline (Field-Tested)': {
'success': True,
'lowest_price': '$15.00',
'volume': '749', 
'median_price': '$14.78'}
}
]

我还没有到把成本加在一起的部分,因为首先我需要隔离每个项目的"最低价格",我怎么能做到这一点,这样我就可以用这个数字来计算总价值/成本(意味着它需要是浮动的(?如果您需要更多详细信息或有任何问题,请告诉我。任何有帮助的,提前谢谢。

这是注释中标识的嵌套字典的问题。这里有一个示例代码来帮助:

key = 'lowest_price'
lowest_prices = {}
for k, v in skins_prices[0].items():
for k1, v1 in v.items():
if k1 == key:
lowest_prices[k] = float(v1[1:])
print(lowest_prices)

输出(我已删除$并转换为浮动(:

{'Mann Co. Supply Crate Key': 2.5, 'AK-47 | Redline (Field-Tested)': 15.0}

现在,您可以使用新字典来操作这些值。例如,获取总和如下所示:

>> sum(list(lowest_prices.values()))
>> 17.5

HTH。

我认为您需要:

low_prices = []
# as your list has only 1 component we are using `[0]` and iterating over it
for _, v in skins_prices[0].items():
low_prices.append(float(v["lowest_price"][1:]))
print(low_prices)

输出:

[2.5, 15.0]

解释

v["lowest_price"][1:]我们使用索引来忽略str中的第一个字符$,所以现在的值将是2.515

在此基础上,我们应用floatstr转换为float,并将其附加到新的列表中,即low_prices

最新更新