python如果值小于输入,则用于打印库存的字典

时间:2019-06-28 23:38:48

标签: python python-3.x

一家计算机商店使用Python词典管理其笔记本电脑库存。每个字典条目都将特定笔记本电脑型号的字符串名称作为键,并将其库存中的整数作为其对应值。

一个例子:

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

定义一个函数low_inventory(laptop_dict,threshold),该函数返回数量小于(<)int阈值的笔记本电脑清单laptop_dict中所有条目的名称列表。

示例:将函数作为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的新手,正在为输出而苦苦挣扎。

3 个答案:

答案 0 :(得分:2)

您需要返回一个列表,因此可以从定义一个列表开始。像这样:

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

这也可以作为list comprehension来完成,它可以一次创建一个列表,而无需显式循环:

def total_items(laptop_dict, threshold):
    return [akey for akey, inv in laptop_dict.items() if inv < threshold]

答案 1 :(得分:2)

您可以使用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 :(得分:1)

您可以尝试过滤

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

和其他迭代功能

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