Как отфильтровать заданный c, непостоянный всплеск из списка - PullRequest
1 голос
/ 27 февраля 2020

Я новичок в python, и я пытался написать программу для отслеживания общей стоимости моего инвентаря Steam. Мне удалось получить все мои скины и цены, но проблема заключается в том, чтобы изолировать выходную цену от выходных данных модуля steam_community_market.market, представляющих собой список с большим количеством ненужной информации. Я не смог найти, как отфильтровать только указанные c строки из списков. Пример формата списка, который я пытаюсь отфильтровать:

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'}
    }
]

Я не дошел до части сложения стоимости вместе, потому что сначала мне нужно выделить «самую низкую цену» для каждого элемента, как я могу сделать это, чтобы я мог использовать это число для расчета общей стоимости / стоимости (то есть это должно быть число с плавающей запятой)? Пожалуйста, скажите мне, если вам нужно больше деталей или есть какие-либо вопросы. Все помогает, заранее спасибо.

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Это проблема вложенного словаря, указанного в комментарии. Вот пример кода, который поможет:

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)

output (я удалил $ и преобразовал в float):

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

Теперь вы можете использовать новый словарь для манипулирования ценности. Например, получение общей суммы производится следующим образом:

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

HTH.

1 голос
/ 27 февраля 2020

Я думаю, вам нужно:

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.5 или 15.

. Для этого мы применяем float для преобразования str в float и добавляем его в новый список low_prices

...