【问题标题】:Making a list comprehension, beginner做一个列表理解,初学者
【发布时间】:2011-01-28 15:40:44
【问题描述】:

我是 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"}}

我将如何创建一个字典,并通过列表理解为其分配键和值?我查看了示例,并且理解了它们,但我不知道如何将它们应用到我的代码中。

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

【问题讨论】:

  • product 是一个字典吗? products_sold 最终会成为一个字典列表,每个字典都有 1 个条目吗?
  • 您的问题需要澄清一下。你的意思是你想通过你的循环运行几次,一旦你完成,从customer_nameproductproducts_sold的内容创建你的事务字典(我假设你也有一个products_bought , 正确的?)。此外,您似乎混淆了dictlist。您附加到list,即[].append()
  • quantity_sold"Jenny" 来自哪里?
  • 这个问题目前无法回答。如果您可以重写示例代码以使其正常工作,或正确传达您的意图,您可能会得到一个很好的答案。在那之前,我会投票结束。
  • 您应该在尝试将其转换为 transaction 字典之前立即添加一个示例,说明 products_sold 的外观。

标签: python list list-comprehension


【解决方案1】:

我会回答我认为你真正的问题是你想理解列表推导。 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]

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

因此,您可以看到,当您询问有关使用列表推导填充字典的问题时,在学习列表推导机制的上下文中确实没有意义。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 2020-02-07
    • 2013-09-20
    • 2016-01-05
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多