簡體   English   中英

如何從列表中過濾出特定的、非常量的浮點數

[英]How to filter a specific, non-constant float out of a list

我是 python 的新手,我一直在嘗試編寫一個程序來跟蹤我的 Steam 庫存的總價值。 我已經能夠檢索我所有的皮膚和價格,但問題是從 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'}
    }
]

我還沒有涉及將成本加在一起的部分,因為首先我需要為每個項目隔離“最低價格”,我怎么做才能使用該數字來計算總價值/成本(意味着它需要是一個浮點數)? 如果您需要更多詳細信息或有任何疑問,請告訴我。 任何幫助,提前致謝。

我認為你需要:

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

這是注釋中確定的嵌套字典的問題。 這是一個示例代碼以幫助您:

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

哈。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM