Компьютерный магазин управляет своими запасами ноутбуков с помощью словарей Python. Каждая запись словаря имеет строковое имя конкретной модели портативного компьютера в качестве ключа и целочисленное количество в инвентаре в качестве соответствующего значения.

Пример:

d = {"MS Surface":47, "HP Laptop Probook":144, "MacBook Pro":23, "Dell Laptop XPS": 10, "Asus Chromebook": 20}

Определите функцию low_inventory (portable_dict, threshold), которая возвращает список имен всех записей в инвентаризации ноутбука laptop_dict, количество которых меньше (<) порога int.

Пример: вызов вашей функции как total_items (d, 47) должен вернуть:

['MacBook Pro', 'Dell Laptop XPS', 'Asus Chromebook']
def low_inventory(laptop_dict, threshold):
    for akey in laptop_dict.keys():
        if laptop_dict[akey] < threshold:
                ----

Подскажите, пожалуйста, как это сделать. Я новичок в Python и борюсь с выходом.

2
Sachin Sharma 29 Июн 2019 в 02:38

3 ответа

Лучший ответ

Вы можете попробовать фильтр

value = filter(lambda x: dict[x] < 3, keys)

И другие итерационные функции

http://book.pythontips.com/en/latest/map_filter.html

1
Logan Murphy 28 Июн 2019 в 23:55

Вам нужно вернуть список, чтобы вы могли начать с его определения. Что-то вроде:

low_inv = []

Затем в вашем цикле append() ключ (в данном случае это имя компьютера) к этому списку, если инвентарь низкий. Затем верните это:

d = {"MS Surface":47, "HP Laptop Probook":144, "MacBook Pro":23, "Dell Laptop XPS": 10, "Asus Chromebook": 20}

def total_items(laptop_dict, threshold):
    low_inv = []                           # new list
    for akey in laptop_dict.keys():
        if laptop_dict[akey] < threshold:
            low_inv.append(akey)           # append to it
    return low_inv                         # return it

total_items(d,47)

#['MacBook Pro', 'Dell Laptop XPS', 'Asus Chromebook']

Это также можно сделать как понимание списка, которое создает список за один раз без явного цикла:

def total_items(laptop_dict, threshold):
    return [akey for akey, inv in laptop_dict.items() if inv < threshold]
2
Mark Meyer 28 Июн 2019 в 23:49

Вы можете использовать d.items() для перебора словаря по ключу и значению. Попробуйте что-то вроде этого:

def low_inventory(laptop_dict, threshold):
    low = []
    for key, value in laptop_dict.items():
        if value < threshold:
            low.append(key)
    return low
2
brandonwang 28 Июн 2019 в 23:44