制作列表理解,初学者

时间:2011-01-28 15:40:44

标签: python list list-comprehension

我是Python的新手,我正在尝试理解列表推导,所以我可以在我的代码中使用它。

pricelist = {"jacket":15, "pants":10, "cap":5, "baseball":3, "gum":1}

products_sold = []

while True:
    product_name = input("what is the name of the product")
    product = {}
    customer_name = input("what is the name of the customer")
    #customer is shopping
    product[sell_price] = pricelist[product_name]
    product["quantity"] = input("how many items were sold?")
    #append the product to a dict

    products_sold.append(product)

现在我想要整个交易的字典应该是这样的:

transaction = {"customer_name":"name",
               "sold":{"jacket":3, "pants":2},
               "bought":{"cap":4, "baseball":2, "gum":"10"}}

我如何创建一个字典,并用列表理解为它分配键和值?我看了一些例子,我理解它们,但我无法弄清楚如何将它们应用到我的代码中。

我的意图是将我的产品列表转换为以不同方式包含相同信息的词典(交易)列表。

1 个答案:

答案 0 :(得分:2)

我会回答我认为你真正的问题,那就是你想要理解列表理解。 IMO,您发布的尝试学习列表推导的示例并不是一个很好的例子。这是我喜欢使用的一个非常简单的例子,因为它很容易将它与你从另一种语言中已经知道的内容联系起来。

# start with a list of numbers
numbers = [1, 2, 3, 4, 5]   

# create an empty list to hold the new numbers
numbers_times_two = []

# iterate over the list and append the new list the number times two
for number in numbers:
    numbers_times_two.append(number * 2)

希望上面的代码有意义且对您来说很熟悉。这是使用列表推导完全相同的事情。请注意,所有相同的部分都在那里,只是稍微移动了一下。

numbers_times_two = [number * 2 for number in numbers]

列表推导使用方括号就像列表一样,它通过迭代迭代(类似列表的东西)创建一个新列表,在这个例子中是数字。

所以,你可以看到当你提出一个关于使用列表理解来填充一个字典的问题时,在学习列表推导的机制的背景下它真的没有意义。

希望这有帮助。